pax_global_header00006660000000000000000000000064135667461360014533gustar00rootroot0000000000000052 comment=325999f8483226d5e3cb879f155c2f4a64d7accd moreblocks-2.0.0/000077500000000000000000000000001356674613600136725ustar00rootroot00000000000000moreblocks-2.0.0/.editorconfig000066400000000000000000000003141356674613600163450ustar00rootroot00000000000000root = true [*] charset = utf-8 end_of_line = lf indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true [*.{lua,luacheckrc}] indent_style = tab indent_size = 4 moreblocks-2.0.0/.luacheckrc000066400000000000000000000007241356674613600160020ustar00rootroot00000000000000std = "lua51+minetest" unused_args = false allow_defined_top = true max_line_length = 999 stds.minetest = { read_globals = { "DIR_DELIM", "minetest", "core", "dump", "vector", "nodeupdate", "VoxelManip", "VoxelArea", "PseudoRandom", "ItemStack", "default", table = { fields = { "copy", }, }, } } read_globals = { "intllib", "protector", "isprotect", "IsPlayerNodeOwner", "HasOwner", "getLastOwner", "GetNodeOwnerName", } moreblocks-2.0.0/.pre-commit-config.yaml000066400000000000000000000003211356674613600201470ustar00rootroot00000000000000repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.3.0 hooks: - id: end-of-file-fixer - id: trailing-whitespace - id: mixed-line-ending args: [--fix=lf] moreblocks-2.0.0/.travis.yml000066400000000000000000000004131356674613600160010ustar00rootroot00000000000000dist: bionic language: python python: - 3.7.1 install: - sudo apt-get update -qq - sudo apt-get install -qqq luarocks - pip3 install pre-commit - luarocks install --local luacheck script: - pre-commit run --all-files - $HOME/.luarocks/bin/luacheck . moreblocks-2.0.0/CHANGELOG.md000066400000000000000000000054771356674613600155200ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.0.0] - 2019-11-25 ### Added - Stairs+ nodes for ice. - `settingtypes.txt` file to allow configuring settings in the main menu. - Polish translation. ### Changed - The minimum supported Minetest version is now 5.0.0. - Stairs+ nodes now emit one light level less compared to full nodes to make up for their smaller visual size. ### Fixed - Fixed a recipe conflict that made Centered Wooden Tiles impossible to craft. ## [1.3.0] - 2019-03-23 ### Changed - Stairs+ are now displayed in the creative inventory by default. - Localization files now use the gettext `.po` format. - Updated intllib support to avoid using deprecated functions. ### Fixed - Node rotation now works correctly when placing Stairs+ nodes. - Stairs+ glasslike nodes' textures are now easier to see. ## [1.2.0] - 2018-11-24 ### Added - Stairs+ nodes for `basic_materials`'s concrete, cement and brass blocks. - Listring add for circular saw. - **Stairs+:** New API function `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)`. ### Fixed - The papyrus crafting recipe override is now properly applied over the `default` mod's recipe. - Centered wooden tiles are now craftable. - Wool Stairs+ nodes can no longer be used in crafting. - The circular saw can no longer replace items from the player's inventory when it is full. ### Changed - New crafting recipes for: - Stone Tile - Circle Stone Bricks - Stairs+: - Moved definitions to `stairsplus.defs` table into a separate file. - Moved recipe definitions to `stairsplus.register_recipes` function into a separate file. ## [1.1.0] - 2017-10-04 ### Added - 3 new node shapes in the circular saw (thin slabs, available in "L-shaped", "corner-shaped" and "U-shaped" variations), all with 1/16 thickness. - New Stairs+ nodes: - Coral Skeleton - Desert Sandstone, Silver Sandstone - Desert Sandstone Brick, Silver Sandstone Brick - Desert Sandstone Block, Silver Sandstone Block - Obsidian Block - Sandstone Block - Stone Block, Desert Stone Block - Straw - Tin Block - Wool (all colors) - Other mods can now get a list of all the defined Stairs+ shapes. ## 1.0.0 - 2017-02-19 - Initial versioned release. [Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v2.0.0...HEAD [2.0.0]: https://github.com/minetest-mods/moreblocks/compare/v1.3.0...v2.0.0 [1.3.0]: https://github.com/minetest-mods/moreblocks/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/minetest-mods/moreblocks/compare/v1.0.0...v1.1.0 moreblocks-2.0.0/CONTRIBUTING.md000066400000000000000000000007201356674613600161220ustar00rootroot00000000000000# Contributing to More Blocks Thank you for your interest in More Blocks! Before contributing, be sure to know about these few guidelines: - Contributions have to be licensed under the zlib license (or compatible) for code, and CC BY-SA 3.0 (or compatible) for assets. - Make sure to update the changelog, keeping the [changelog format](http://keepachangelog.com/en/1.0.0/) we use. - Don't bump the version yourself. Maintainers will do this when necessary. moreblocks-2.0.0/LICENSE.md000066400000000000000000000015631356674613600153030ustar00rootroot00000000000000# zlib license Copyright © 2011-2019 Hugo Locurcio and contributors **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-2.0.0/README.md000066400000000000000000000050611356674613600151530ustar00rootroot00000000000000# More Blocks More Blocks for [Minetest](https://www.minetest.net/), a free and open source infinite world block sandbox game. [**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=509) ## Installation ### Download the mod To install More Blocks, clone this Git repository into your Minetest's `mods/` directory: ```bash git clone https://github.com/minetest-mods/moreblocks.git ``` You can also [download a ZIP archive](https://github.com/minetest-mods/moreblocks/archive/master.zip) of More Blocks. If you do so, you will need to extract the archive then rename the resulting folder from `moreblocks-master` to `moreblocks` – this is **absolutely** required, as the mod won't work otherwise. ### Enable the mod Once you have installed More Blocks, you need to enable it in Minetest. The procedure is as follows: #### Using the client's main menu This is the easiest way to enable More Blocks when playing in singleplayer (or on a server hosted from a client). 1. Start Minetest and switch to the **Local Game** tab. 2. Select the world you want to enable More Blocks in. 3. Click **Configure**, then enable `moreblocks` by double-clicking it (or ticking the **Enabled** checkbox). 4. Save the changes, then start a game on the world you enabled More Blocks on. 5. More Blocks should now be running on your world. #### Using a text editor This is the recommended way to enable the mod on a server without using a GUI. 1. Make sure Minetest is not currently running (otherwise, it will overwrite the changes when exiting). 2. Open the world's `world.mt` file using a text editor. 3. Add the following line at the end of the file: ```text load_mod_moreblocks = true ``` If the line is already present in the file, then replace `false` with `true` on that line. 4. Save the file, then start a game on the world you enabled More Blocks on. 5. More Blocks should now be running on your world. ## Version compatibility More Blocks is currently primarily tested with Minetest 5.1.0. It may or may not work with newer or older versions. Issues arising in older versions than 5.0.0 will generally not be fixed. ## License Copyright © 2011-2019 Hugo Locurcio and contributors - More Blocks code is licensed under the zlib license, see [`LICENSE.md`](LICENSE.md) for details. - Unless otherwise specified, More Blocks textures are licensed under [CC BY-SA 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/). `moreblocks_copperpatina.png` was created by pithydon, and is licensed under [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/). moreblocks-2.0.0/aliases.lua000066400000000000000000000121301356674613600160130ustar00rootroot00000000000000--[[ More Blocks: alias definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- More Blocks aliases: minetest.register_alias("sweeper", "moreblocks:sweeper") minetest.register_alias("circular_saw", "moreblocks:circular_saw") minetest.register_alias("jungle_stick", "moreblocks:jungle_stick") -- 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:fence_junglewood", "default:fence_junglewood") minetest.register_alias("moreblocks:fence_jungle_wood", "default:fence_junglewood") minetest.register_alias("moreblocks:jungle_stick", "default:stick") for _, t in pairs(circular_saw.names) do minetest.register_alias("moreblocks:" .. t[1] .. "_jungle_wood" .. t[2], "moreblocks:" .. t[1] .. "_junglewood" .. t[2]) end 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: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_offset") minetest.register_alias("moreblocks:wood_tile_up", "moreblocks:wood_tile_offset") 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") minetest.register_alias("moreblocks:empty_bookshelf","moreblocks:empty_shelf") minetest.register_alias("moreblocks:split_stone_tile_alt","moreblocks:checker_stone_tile") -- ABM for horizontal trees (fix facedir): local horizontal_tree_convert_facedir = {7, 12, 9, 18} minetest.register_abm({ nodenames = {"moreblocks:horizontal_tree","moreblocks:horizontal_jungle_tree"}, interval = 1, chance = 1, action = function(pos, node) if node.name == "moreblocks:horizontal_tree" then node.name = "default:tree" else node.name = "default:jungletree" end node.param2 = node.param2 < 3 and node.param2 or 0 minetest.set_node(pos, { name = node.name, param2 = horizontal_tree_convert_facedir[node.param2 + 1] }) end, }) minetest.register_lbm({ name = "moreblocks:reduce_wood_tile_redundancy", nodenames = { "moreblocks:wood_tile_left", "moreblocks:wood_tile_down", "moreblocks:wood_tile_right", "moreblocks:wood_tile_flipped", }, action = function(pos, node) if node.name:find("left") then minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=1}) elseif node.name:find("down") then minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=2}) elseif node.name:find("right") then minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=3}) else -- wood_tile_flipped minetest.set_node(pos, {name = "moreblocks:wood_tile", param2=1}) end minetest.log('action', "LBM replaced " .. node.name .. " at " .. minetest.pos_to_string(pos)) end, }) moreblocks-2.0.0/circular_saw.lua000066400000000000000000000346721356674613600170670ustar00rootroot00000000000000--[[ More Blocks: circular saw Copyright © 2011-2019 Hugo Locurcio, Sokomine and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.S local F = minetest.formspec_escape circular_saw = {} circular_saw.known_stairs = setmetatable({}, { __newindex = function(k, v) local modname = minetest.get_current_modname() print(("WARNING: mod %s tried to add node %s to the circular saw" .. " manually."):format(modname, v)) end, }) -- This is populated by stairsplus:register_all: circular_saw.known_nodes = {} -- How many microblocks does this shape at the output inventory cost: -- It may cause slight loss, but no gain. circular_saw.cost_in_microblocks = { 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, 4, 2, 4, 5, 6, 7, 1, 1, 2, 4, 6, 7, 8, 1, 2, 2, 3, 1, 1, 2, 4, 4, 2, 6, 7, 3, 7, 7, 4, 8, 3, 2, 6, 2, 1, 3, 4 } circular_saw.names = { {"micro", "_1"}, {"panel", "_1"}, {"micro", "_2"}, {"panel", "_2"}, {"micro", "_4"}, {"panel", "_4"}, {"micro", ""}, {"panel", ""}, {"micro", "_12"}, {"panel", "_12"}, {"micro", "_14"}, {"panel", "_14"}, {"micro", "_15"}, {"panel", "_15"}, {"stair", "_outer"}, {"stair", ""}, {"stair", "_inner"}, {"slab", "_1"}, {"slab", "_2"}, {"slab", "_quarter"}, {"slab", ""}, {"slab", "_three_quarter"}, {"slab", "_14"}, {"slab", "_15"}, {"slab", "_two_sides"}, {"slab", "_three_sides"}, {"slab", "_three_sides_u"}, {"stair", "_half"}, {"stair", "_alt_1"}, {"stair", "_alt_2"}, {"stair", "_alt_4"}, {"stair", "_alt"}, {"slope", ""}, {"slope", "_half"}, {"slope", "_half_raised"}, {"slope", "_inner"}, {"slope", "_inner_half"}, {"slope", "_inner_half_raised"}, {"slope", "_inner_cut"}, {"slope", "_inner_cut_half"}, {"slope", "_inner_cut_half_raised"}, {"slope", "_outer"}, {"slope", "_outer_half"}, {"slope", "_outer_half_raised"}, {"slope", "_outer_cut"}, {"slope", "_outer_cut_half"}, {"slope", "_outer_cut_half_raised"}, {"slope", "_cut"}, } function circular_saw:get_cost(inv, stackname) for i, item in pairs(inv:get_list("output")) do if item:get_name() == stackname then return circular_saw.cost_in_microblocks[i] end end end function circular_saw:get_output_inv(modname, material, amount, max) if (not max or max < 1 or max > 99) then max = 99 end local list = {} local pos = #list -- If there is nothing inside, display empty inventory: if amount < 1 then return list end for i = 1, #circular_saw.names do local t = circular_saw.names[i] local cost = circular_saw.cost_in_microblocks[i] local balance = math.min(math.floor(amount/cost), max) local nodename = modname .. ":" .. t[1] .. "_" .. material .. t[2] if minetest.registered_nodes[nodename] then pos = pos + 1 list[pos] = nodename .. " " .. balance end end return list end -- Reset empty circular_saw after last full block has been taken out -- (or the circular_saw has been placed the first time) -- Note: max_offered is not reset: function circular_saw:reset(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local owned_by = meta:get_string("owner") if owned_by and owned_by ~= "" then owned_by = (" (%s)"):format(S("owned by @1", meta:get_string("owner"))) else owned_by = "" end inv:set_list("input", {}) inv:set_list("micro", {}) inv:set_list("output", {}) meta:set_int("anz", 0) meta:set_string("infotext", S("Circular Saw is empty") .. owned_by) end -- Player has taken something out of the box or placed something inside -- that amounts to count microblocks: function circular_saw:update_inventory(pos, amount) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() amount = meta:get_int("anz") + amount -- The material is recycled automatically. inv:set_list("recycle", {}) if amount < 1 then -- If the last block is taken out. self:reset(pos) return end local stack = inv:get_stack("input", 1) -- At least one "normal" block is necessary to see what kind of stairs are requested. if stack:is_empty() then -- Any microblocks not taken out yet are now lost. -- (covers material loss in the machine) self:reset(pos) return end local node_name = stack:get_name() or "" local node_def = stack:get_definition() local name_parts = circular_saw.known_nodes[node_name] or "" local modname = name_parts[1] or "" local material = name_parts[2] or "" local owned_by = meta:get_string("owner") if owned_by and owned_by ~= "" then owned_by = (" (%s)"):format(S("owned by @1", meta:get_string("owner"))) else owned_by = "" end inv:set_list("input", { -- Display as many full blocks as possible: node_name.. " " .. math.floor(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 " .. (amount) .. " microblocks.") -- 0-7 microblocks may remain left-over: inv:set_list("micro", { modname .. ":micro_" .. material .. " " .. (amount % 8) }) -- Display: inv:set_list("output", self:get_output_inv(modname, material, amount, meta:get_int("max_offered"))) -- Store how many microblocks are available: meta:set_int("anz", amount) meta:set_string("infotext", S("Circular Saw is working on @1", node_def and node_def.description or material ) .. owned_by ) end -- The amount of items offered per shape can be configured: function circular_saw.on_receive_fields(pos, formname, fields, sender) local meta = minetest.get_meta(pos) local max = tonumber(fields.max_offered) if max and max > 0 then meta:set_string("max_offered", max) -- Update to show the correct number of items: circular_saw:update_inventory(pos, 0) end end -- Moving the inventory of the circular_saw around is not allowed because it -- is a fictional inventory. Moving inventory around would be rather -- impractical and make things more difficult to calculate: function circular_saw.allow_metadata_inventory_move( pos, from_list, from_index, to_list, to_index, count, player) return 0 end -- Only input- and recycle-slot are intended as input slots: function circular_saw.allow_metadata_inventory_put( 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.get_meta(pos) local inv = meta:get_inventory() local stackname = stack:get_name() local count = stack:get_count() -- Only allow those items that are offered in the output inventory to be recycled: if listname == "recycle" then if not inv:contains_item("output", stackname) then return 0 end local stackmax = stack:get_stack_max() local instack = inv:get_stack("input", 1) local microstack = inv:get_stack("micro", 1) local incount = instack:get_count() local incost = (incount * 8) + microstack:get_count() local maxcost = (stackmax * 8) + 7 local cost = circular_saw:get_cost(inv, stackname) if (incost + cost) > maxcost then return math.max((maxcost - incost) / cost, 0) end return count end -- Only accept certain blocks as input which are known to be craftable into stairs: if listname == "input" then if not inv:is_empty("input") then if inv:get_stack("input", index):get_name() ~= stackname then return 0 end end if not inv:is_empty("micro") then local microstackname = inv:get_stack("micro", 1):get_name():gsub("^.+:micro_", "", 1) local cutstackname = stackname:gsub("^.+:", "", 1) if microstackname ~= cutstackname then return 0 end end for name, t in pairs(circular_saw.known_nodes) do if name == stackname and inv:room_for_item("input", stack) then return count end end return 0 end 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: function circular_saw.on_metadata_inventory_put( 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.get_meta(pos) local inv = meta:get_inventory() local stackname = stack:get_name() local count = stack:get_count() -- 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 * count) elseif listname == "recycle" then -- Lets look which shape this represents: local cost = circular_saw:get_cost(inv, stackname) local input_stack = inv:get_stack("input", 1) -- check if this would not exceed input itemstack max_stacks if input_stack:get_count() + ((cost * count) / 8) <= input_stack:get_stack_max() then circular_saw:update_inventory(pos, cost * count) end end end function circular_saw.allow_metadata_inventory_take(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local input_stack = inv:get_stack(listname, index) local player_inv = player:get_inventory() if not player_inv:room_for_item("main", input_stack) then return 0 else return stack:get_count() end end function circular_saw.on_metadata_inventory_take( pos, listname, index, stack, player) -- Prevent (inbuilt) swapping between inventories with different blocks -- corrupting player inventory or Saw with 'unknown' items. local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local input_stack = inv:get_stack(listname, index) if not input_stack:is_empty() and input_stack:get_name()~=stack:get_name() then local player_inv = player:get_inventory() if player_inv:room_for_item("main", input_stack) then player_inv:add_item("main", input_stack) end circular_saw:reset(pos) return end -- If it is one of the offered stairs: find out how many -- microblocks have to be subtracted: 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, -cost) elseif listname == "micro" then -- Each microblock costs 1 microblock: circular_saw:update_inventory(pos, -stack:get_count()) elseif listname == "input" then -- Each normal (= full) block taken costs 8 microblocks: circular_saw:update_inventory(pos, 8 * -stack:get_count()) end -- The recycle field plays no role here since it is processed immediately. end function circular_saw.on_construct(pos) local meta = minetest.get_meta(pos) local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots meta:set_string( "formspec", "size[11,10]"..fancy_inv.. "label[0,0;" ..F(S("Input\nmaterial")).. "]" .. "list[current_name;input;1.5,0;1,1;]" .. "label[0,1;" ..F(S("Left-over")).. "]" .. "list[current_name;micro;1.5,1;1,1;]" .. "label[0,2;" ..F(S("Recycle\noutput")).. "]" .. "list[current_name;recycle;1.5,2;1,1;]" .. "field[0.3,3.5;1,1;max_offered;" ..F(S("Max")).. ":;${max_offered}]" .. "button[1,3.2;1,1;Set;" ..F(S("Set")).. "]" .. "list[current_name;output;2.8,0;8,6;]" .. "list[current_player;main;1.5,6.25;8,4;]" .. "listring[current_name;output]" .. "listring[current_player;main]" .. "listring[current_name;input]" .. "listring[current_player;main]" .. "listring[current_name;micro]" .. "listring[current_player;main]" .. "listring[current_name;recycle]" .. "listring[current_player;main]" ) 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", S("Circular Saw is 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", 6*8) -- 6x8 versions of stair-parts of material x. circular_saw:reset(pos) end function circular_saw.can_dig(pos,player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if not inv:is_empty("input") or not inv:is_empty("micro") or not inv:is_empty("recycle") then return false end -- Can be dug 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 }, }, tiles = {"moreblocks_circular_saw_top.png", "moreblocks_circular_saw_bottom.png", "moreblocks_circular_saw_side.png"}, paramtype = "light", sunlight_propagates = true, paramtype2 = "facedir", groups = {choppy = 2,oddly_breakable_by_hand = 2}, sounds = default.node_sound_wood_defaults(), on_construct = circular_saw.on_construct, can_dig = circular_saw.can_dig, -- Set the owner of this circular saw. after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) local owner = placer and placer:get_player_name() or "" local owned_by = owner if owner ~= "" then owned_by = (" (%s)"):format(S("owned by @1", owner)) end meta:set_string("owner", owner) meta:set_string("infotext", S("Circular Saw is empty") .. owned_by) end, -- The amount of items offered per shape can be configured: on_receive_fields = circular_saw.on_receive_fields, allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move, -- Only input- and recycle-slot are intended as input slots: allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put, allow_metadata_inventory_take = circular_saw.allow_metadata_inventory_take, -- 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 = circular_saw.on_metadata_inventory_put, on_metadata_inventory_take = circular_saw.on_metadata_inventory_take, }) moreblocks-2.0.0/config.lua000066400000000000000000000013721356674613600156450ustar00rootroot00000000000000--[[ More Blocks: configuration handling Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] moreblocks.config = {} local function getbool_default(setting, default) local value = minetest.settings:get_bool(setting) if value == nil then value = default end return value end local function setting(settingtype, name, default) if settingtype == "bool" then moreblocks.config[name] = getbool_default("moreblocks." .. name, default) else moreblocks.config[name] = minetest.settings:get("moreblocks." .. name) or default end end -- Show stairs/slabs/panels/microblocks in creative inventory (true or false): setting("bool", "stairsplus_in_creative_inventory", true) moreblocks-2.0.0/crafting.lua000066400000000000000000000314031356674613600161730ustar00rootroot00000000000000--[[ More Blocks: crafting recipes Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] minetest.register_craft({ output = "default:stick", recipe = {{"default:dry_shrub"},} }) minetest.register_craft({ output = "default:stick", recipe = {{"group:sapling"},} }) minetest.register_craft({ output = "default:wood", recipe = { {"default:stick", "default:stick"}, {"default:stick", "default:stick"}, } }) minetest.register_craft({ output = "default:dirt_with_grass", type = "shapeless", recipe = {"default:junglegrass", "default:dirt"}, }) minetest.register_craft({ output = "default:mossycobble", type = "shapeless", recipe = {"default:junglegrass", "default:cobble"}, }) minetest.register_craft({ output = "moreblocks:wood_tile 9", recipe = { {"group:wood", "group:wood", "group:wood"}, {"group:wood", "group:wood", "group:wood"}, {"group:wood", "group:wood", "group:wood"}, } }) -- This must be registered after `moreblocks:wood_tile` to avoid recipe conflicts, -- since `moreblocks:wood_tile` is part of `group:wood` minetest.register_craft({ output = "moreblocks:wood_tile_center 9", recipe = { {"group:wood", "group:wood", "group:wood"}, {"group:wood", "moreblocks:wood_tile", "group:wood"}, {"group:wood", "group:wood", "group:wood"}, } }) minetest.register_craft({ type = "shapeless", output = "moreblocks:wood_tile", recipe = {"moreblocks:wood_tile_flipped"} }) minetest.register_craft({ output = "moreblocks:wood_tile_full 4", recipe = { {"moreblocks:wood_tile", "moreblocks:wood_tile"}, {"moreblocks:wood_tile", "moreblocks:wood_tile"}, } }) minetest.register_craft({ output = "moreblocks:wood_tile_offset", recipe = { {"default:stick"}, {"moreblocks:wood_tile_center"}, } }) minetest.register_craft({ type = "shapeless", output = "moreblocks:wood_tile_offset", recipe = {"moreblocks:wood_tile_down"} }) minetest.register_craft({ type = "shapeless", output = "moreblocks:wood_tile_offset", recipe = {"moreblocks:wood_tile_left"} }) minetest.register_craft({ type = "shapeless", output = "moreblocks:wood_tile_offset", recipe = {"moreblocks:wood_tile_right"} }) minetest.register_craft({ output = "moreblocks:circle_stone_bricks 5", recipe = { {"", "default:stone", ""}, {"default:stone", "default:coal_lump", "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:all_faces_pine_tree 8", recipe = { {"default:pine_tree", "default:pine_tree", "default:pine_tree"}, {"default:pine_tree", "", "default:pine_tree"}, {"default:pine_tree", "default:pine_tree", "default:pine_tree"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_acacia_tree 8", recipe = { {"default:acacia_tree", "default:acacia_tree", "default:acacia_tree"}, {"default:acacia_tree", "", "default:acacia_tree"}, {"default:acacia_tree", "default:acacia_tree", "default:acacia_tree"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_aspen_tree 8", recipe = { {"default:aspen_tree", "default:aspen_tree", "default:aspen_tree"}, {"default:aspen_tree", "", "default:aspen_tree"}, {"default:aspen_tree", "default:aspen_tree", "default:aspen_tree"}, } }) minetest.register_craft({ output = "moreblocks:sweeper 4", recipe = { {"default:junglegrass"}, {"default:stick"}, } }) minetest.register_craft({ output = "moreblocks:stone_tile 9", recipe = { {"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble", "default:stone", "default:cobble"}, {"default:cobble", "default:cobble", "default:cobble"}, } }) minetest.register_craft({ output = "moreblocks:split_stone_tile", recipe = { {"moreblocks:stone_tile"}, } }) minetest.register_craft({ output = "moreblocks:checker_stone_tile", recipe = { {"moreblocks:split_stone_tile"}, } }) -- When approaching the below craft, loop back to cobblestone, which can then be used to craft stone tiles again minetest.register_craft({ output = "default:cobble", recipe = { {"moreblocks:checker_stone_tile"}, } }) minetest.register_craft({ output = "moreblocks:grey_bricks 2", type = "shapeless", recipe = {"default:stone", "default:brick"}, }) minetest.register_craft({ output = "moreblocks:grey_bricks 2", type = "shapeless", recipe = {"default:stonebrick", "default:brick"}, }) minetest.register_craft({ output = "moreblocks:empty_shelf", type = "shapeless", recipe = {"moreblocks:sweeper", "default:bookshelf"}, replacements = {{"default:bookshelf", "default:book 3"}}, -- When obtaining an empty shelf, return the books used in it as well }) minetest.register_craft({ output = "moreblocks:empty_shelf", type = "shapeless", recipe = {"moreblocks:sweeper", "vessels:shelf"}, replacements = {{"vessels:shelf", "vessels:glass_bottle 3"}}, }) minetest.register_craft({ type = "shapeless", output = "default:bookshelf", recipe = {"moreblocks:empty_shelf", "default:book", "default:book", "default:book"}, }) minetest.register_craft({ output = "moreblocks:empty_shelf", recipe = { {"group:wood", "group:wood", "group:wood"}, {"", "", ""}, {"group:wood", "group:wood", "group:wood"}, } }) minetest.register_craft({ output = "moreblocks:coal_stone_bricks 4", recipe = { {"moreblocks:coal_stone", "moreblocks:coal_stone"}, {"moreblocks:coal_stone", "moreblocks:coal_stone"}, } }) minetest.register_craft({ output = "moreblocks:iron_stone_bricks 4", recipe = { {"moreblocks:iron_stone", "moreblocks:iron_stone"}, {"moreblocks:iron_stone", "moreblocks:iron_stone"}, } }) minetest.register_craft({ output = "moreblocks:plankstone 4", recipe = { {"group:stone", "group:wood"}, {"group:wood", "group:stone"}, } }) minetest.register_craft({ output = "moreblocks:plankstone 4", recipe = { {"group:wood", "group:stone"}, {"group:stone", "group: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", type = "shapeless", recipe = {"default:steel_ingot", "default:chest"}, }) minetest.register_craft({ output = "default:chest_locked", type = "shapeless", recipe = {"default:copper_ingot", "default:chest"}, }) minetest.register_craft({ output = "default:chest_locked", type = "shapeless", recipe = {"default:bronze_ingot", "default:chest"}, }) minetest.register_craft({ output = "default:chest_locked", type = "shapeless", recipe = {"default:gold_ingot", "default:chest"}, }) minetest.register_craft({ output = "moreblocks:iron_glass", type = "shapeless", recipe = {"default:steel_ingot", "default:glass"}, }) minetest.register_craft({ output = "default:glass", type = "shapeless", recipe = {"default:coal_lump", "moreblocks:iron_glass"}, }) minetest.register_craft({ output = "moreblocks:coal_glass", type = "shapeless", recipe = {"default:coal_lump", "default:glass"}, }) minetest.register_craft({ output = "default:glass", type = "shapeless", recipe = {"default:steel_ingot", "moreblocks:coal_glass"}, }) minetest.register_craft({ output = "moreblocks:clean_glass", type = "shapeless", recipe = {"moreblocks:sweeper", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:glow_glass", type = "shapeless", recipe = {"default:torch", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:trap_glow_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:glass", "default:torch"}, }) minetest.register_craft({ output = "moreblocks:trap_glow_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "moreblocks:glow_glass"}, }) minetest.register_craft({ output = "moreblocks:super_glow_glass", type = "shapeless", recipe = {"default:torch", "default:torch", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:super_glow_glass", type = "shapeless", recipe = {"default:torch", "moreblocks:glow_glass"}, }) minetest.register_craft({ output = "moreblocks:trap_super_glow_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:glass", "default:torch", "default:torch"}, }) minetest.register_craft({ output = "moreblocks:trap_super_glow_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "moreblocks:super_glow_glass"}, }) minetest.register_craft({ output = "moreblocks:coal_stone", type = "shapeless", recipe = {"default:coal_lump", "default:stone"}, }) minetest.register_craft({ output = "default:stone", type = "shapeless", recipe = {"default:steel_ingot", "moreblocks:coal_stone"}, }) minetest.register_craft({ output = "moreblocks:iron_stone", type = "shapeless", recipe = {"default:steel_ingot", "default:stone"}, }) minetest.register_craft({ output = "default:stone", type = "shapeless", recipe = {"default:coal_lump", "moreblocks:iron_stone"}, }) minetest.register_craft({ output = "moreblocks:trap_stone", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:stone"}, }) minetest.register_craft({ output = "moreblocks:trap_desert_stone", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:desert_stone"}, }) minetest.register_craft({ output = "moreblocks:trap_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:trap_obsidian_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:obsidian_glass"}, }) minetest.register_craft({ output = "moreblocks:trap_obsidian", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:obsidian"}, }) minetest.register_craft({ output = "moreblocks:trap_sandstone", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:sandstone"}, }) minetest.register_craft({ output = "moreblocks:cactus_brick", 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 3", recipe = { {"default:junglegrass"}, {"default:junglegrass"}, {"default:junglegrass"}, } }) minetest.register_craft({ output = "moreblocks:dirt_compressed", recipe = { {'default:dirt', 'default:dirt', 'default:dirt'}, {'default:dirt', 'default:dirt', 'default:dirt'}, {'default:dirt', 'default:dirt', 'default:dirt'}, } }) minetest.register_craft({ output = "default:dirt 9", recipe = {{"moreblocks:dirt_compressed"}}, }) minetest.register_craft({ output = "moreblocks:cobble_compressed", recipe = { {"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble", "default:cobble", "default:cobble"}, } }) minetest.register_craft({ output = "default:cobble 9", recipe = { {"moreblocks:cobble_compressed"}, } }) minetest.register_craft({ type = "cooking", output = "moreblocks:tar", recipe = "default:pine_tree", }) minetest.register_craft({ type = "shapeless", output = "moreblocks:copperpatina", recipe = {"group:water_bucket", "default:copperblock"}, replacements = { {"group:water_bucket", "bucket:bucket_empty"} } }) minetest.register_craft({ output = "default:copper_ingot 9", recipe = { {"moreblocks:copperpatina"}, } }) if minetest.settings:get_bool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then” minetest.register_craft({ output = "moreblocks:circular_saw", recipe = { { "", "default:steel_ingot", "" }, { "group:wood", "group:wood", "group:wood"}, { "group:wood", "", "group:wood"}, } }) end moreblocks-2.0.0/init.lua000066400000000000000000000013671356674613600153470ustar00rootroot00000000000000--[[ ===================================================================== ** More Blocks ** By Calinou, with the help of ShadowNinja and VanessaE. Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. ===================================================================== --]] moreblocks = {} local modpath = minetest.get_modpath("moreblocks") local S, NS = dofile(modpath .. "/intllib.lua") moreblocks.S = S moreblocks.NS = NS dofile(modpath .. "/config.lua") dofile(modpath .. "/circular_saw.lua") dofile(modpath .. "/stairsplus/init.lua") dofile(modpath .. "/nodes.lua") dofile(modpath .. "/redefinitions.lua") dofile(modpath .. "/crafting.lua") dofile(modpath .. "/aliases.lua") moreblocks-2.0.0/intllib.lua000066400000000000000000000021411356674613600160300ustar00rootroot00000000000000-- Fallback functions for when `intllib` is not installed. -- Code released under Unlicense . -- Get the latest version of this file at: -- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua local function format(str, ...) local args = { ... } local function repl(escape, open, num, close) if escape == "" then local replacement = tostring(args[tonumber(num)]) if open == "" then replacement = replacement..close end return replacement else return "@"..open..num..close end end return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) end local gettext, ngettext if minetest.get_modpath("intllib") then if intllib.make_gettext_pair then -- New method using gettext. gettext, ngettext = intllib.make_gettext_pair() else -- Old method using text files. gettext = intllib.Getter() end end -- Fill in missing functions. gettext = gettext or function(msgid, ...) return format(msgid, ...) end ngettext = ngettext or function(msgid, msgid_plural, n, ...) return format(n==1 and msgid or msgid_plural, ...) end return gettext, ngettext moreblocks-2.0.0/locale/000077500000000000000000000000001356674613600151315ustar00rootroot00000000000000moreblocks-2.0.0/locale/de.po000066400000000000000000000111711356674613600160620ustar00rootroot00000000000000# German translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # Xanthin, 2014. # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "Kreissäge" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" "Ausgangs-\n" "material" #: circular_saw.lua msgid "Left-over" msgstr "Rest" #: circular_saw.lua msgid "Max" msgstr "Anzahl" #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" "Wiederver-\n" "werten" #: circular_saw.lua msgid "Set" msgstr "Ok" #: circular_saw.lua msgid "owned by @1" msgstr "gehört @1" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "Kreissäge ist leer" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "Kreissäge arbeitet mit @1" #: init.lua msgid "[moreblocks] loaded." msgstr "[moreblocks] geladen." #: nodes.lua msgid "Deprecated" msgstr "veraltet" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "allseitiger Akazienbaumstamm" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "allseitiger Espenbaumstamm" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "allseitiger Tropenbaumstamm" #: nodes.lua msgid "All-faces Pine Tree" msgstr "allseitiger Kieferbaumstamm" #: nodes.lua msgid "All-faces Tree" msgstr "allseitiger Baumstamm" #: nodes.lua msgid "Cactus Brick" msgstr "Kaktusziegel" #: nodes.lua msgid "Cactus Checker" msgstr "Kaktus-Mosaik" #: nodes.lua msgid "Centered Wooden Tile" msgstr "Holzfliese mittig" #: nodes.lua msgid "Checker Stone Tile" msgstr "Stein-Mosaik" #: nodes.lua msgid "Circle Stone Bricks" msgstr "Kreissteinziegel" #: nodes.lua msgid "Clean Glass" msgstr "Klares Glas" #: nodes.lua msgid "Coal Checker" msgstr "Kohlen-Mosaik" #: nodes.lua msgid "Coal Glass" msgstr "Kohleglas" #: nodes.lua msgid "Coal Stone" msgstr "Kohlestein" #: nodes.lua msgid "Coal Stone Bricks" msgstr "Kohlesteinziegel" #: nodes.lua msgid "Compressed Cobblestone" msgstr "Gepresster Kopfsteinpflaster" #: nodes.lua msgid "Compressed Dirt" msgstr "Gepresste Erde" #: nodes.lua msgid "Copper Patina Block" msgstr "Kupfer Edelrostblock" #: nodes.lua msgid "Empty Shelf" msgstr "Leeres Regal" #: nodes.lua msgid "Full Wooden Tile" msgstr "Vollholzfliese" #: nodes.lua msgid "Glow Glass" msgstr "Leuchtglas" #: nodes.lua msgid "Iron Checker" msgstr "Metall-Mosaik" #: nodes.lua msgid "Iron Glass" msgstr "metallisiertes Glas" #: nodes.lua msgid "Iron Stone" msgstr "Eisenstein" #: nodes.lua msgid "Iron Stone Bricks" msgstr "Eisensteinziegel" #: nodes.lua msgid "Plankstone" msgstr "Brettstein" #: nodes.lua msgid "Rope" msgstr "Seil" #: nodes.lua msgid "Split Stone Tile" msgstr "Geteilte Steinfliese" #: nodes.lua msgid "Stone Bricks" msgstr "Steinziegel" #: nodes.lua msgid "Stone Tile" msgstr "Steinfliese" #: nodes.lua msgid "Super Glow Glass" msgstr "Superleuchtglas" #: nodes.lua msgid "Sweeper" msgstr "Besen" #: nodes.lua msgid "Tar" msgstr "Teer" #: nodes.lua msgid "Trap Desert Stone" msgstr "Wüstensteinfalle" #: nodes.lua msgid "Trap Glass" msgstr "Glasfalle" #: nodes.lua msgid "Trap Glow Glass" msgstr "Leuchtglasfalle" #: nodes.lua msgid "Trap Obsidian" msgstr "Obsidianfalle" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "Obsidianglasfalle" #: nodes.lua msgid "Trap Sandstone" msgstr "Sandsteinfalle" #: nodes.lua msgid "Trap Stone" msgstr "Steinfalle" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "Superleuchtglasfalle" #: nodes.lua msgid "Wooden Tile" msgstr "Holzfliese" #: nodes.lua msgid "Offset Wooden Tile" msgstr "Holzfliese versetzt" #: nodes.lua msgid "Downwards Wooden Tile" msgstr "Holzfliese unten" #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "Holzfliese links" #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "Holzfliese rechts" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "Tut mir leid, dieser Bereich gehört @1." #: ownership.lua msgid "someone" msgstr "jemand" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "%smikroblock" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "%splatte" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "%sneigung" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "%spaneel" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "%streppe" moreblocks-2.0.0/locale/es.po000066400000000000000000000102261356674613600161010ustar00rootroot00000000000000# Spanish translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # kaeza, 2013. # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" #: circular_saw.lua msgid "Left-over" msgstr "" #: circular_saw.lua msgid "Max" msgstr "" #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" #: circular_saw.lua msgid "Set" msgstr "" #: circular_saw.lua msgid "owned by @1" msgstr "" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "" #: init.lua msgid "[moreblocks] loaded." msgstr "[moreblocks] cargado." #: nodes.lua msgid "Deprecated" msgstr "" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "" #: nodes.lua msgid "All-faces Pine Tree" msgstr "" #: nodes.lua msgid "All-faces Tree" msgstr "Tronco de Árbol" #: nodes.lua msgid "Cactus Brick" msgstr "Ladrillos de Cactus" #: nodes.lua msgid "Cactus Checker" msgstr "Cuadros de Cactus" #: nodes.lua msgid "Centered Wooden Tile" msgstr "Parquet Centrado" #: nodes.lua msgid "Checker Stone Tile" msgstr "" #: nodes.lua msgid "Circle Stone Bricks" msgstr "Bloques de Piedra Circulares" #: nodes.lua msgid "Clean Glass" msgstr "Cristal Limpio" #: nodes.lua msgid "Coal Checker" msgstr "Cuadros de Carbón" #: nodes.lua msgid "Coal Glass" msgstr "Cristal con Carbón" #: nodes.lua msgid "Coal Stone" msgstr "Carbón y Piedra" #: nodes.lua msgid "Coal Stone Bricks" msgstr "" #: nodes.lua msgid "Compressed Cobblestone" msgstr "" #: nodes.lua msgid "Compressed Dirt" msgstr "" #: nodes.lua msgid "Copper Patina Block" msgstr "" #: nodes.lua msgid "Empty Shelf" msgstr "" #: nodes.lua msgid "Full Wooden Tile" msgstr "Parquet Completo" #: nodes.lua msgid "Glow Glass" msgstr "Cristal Brillante" #: nodes.lua msgid "Iron Checker" msgstr "Cuadros de Hierro" #: nodes.lua msgid "Iron Glass" msgstr "Cristal con Hierro" #: nodes.lua msgid "Iron Stone" msgstr "Hierro y Piedra" #: nodes.lua msgid "Iron Stone Bricks" msgstr "" #: nodes.lua msgid "Plankstone" msgstr "Tablones de piedra" #: nodes.lua msgid "Rope" msgstr "Soga" #: nodes.lua msgid "Split Stone Tile" msgstr "Baldosas de Piedra Partida" #: nodes.lua msgid "Stone Bricks" msgstr "" #: nodes.lua msgid "Stone Tile" msgstr "Baldosa de Piedra" #: nodes.lua msgid "Super Glow Glass" msgstr "Cristal Súper Brillante" #: nodes.lua msgid "Sweeper" msgstr "Limpiador" #: nodes.lua msgid "Tar" msgstr "" #: nodes.lua msgid "Trap Desert Stone" msgstr "" #: nodes.lua msgid "Trap Glass" msgstr "Cristal Trampa" #: nodes.lua msgid "Trap Glow Glass" msgstr "" #: nodes.lua msgid "Trap Obsidian" msgstr "" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "" #: nodes.lua msgid "Trap Sandstone" msgstr "" #: nodes.lua msgid "Trap Stone" msgstr "Piedra Trampa" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "" #: nodes.lua msgid "Wooden Tile" msgstr "Parquet" #: nodes.lua msgid "Offset Wooden Tile" msgstr "" #: nodes.lua msgid "Downwards Wooden Tile" msgstr "" #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "" #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "" #: ownership.lua msgid "someone" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "Microbloque de %s" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "Losa de %s" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "Panel de %s" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "Escalera de %s" moreblocks-2.0.0/locale/fr.po000066400000000000000000000120411356674613600160760ustar00rootroot00000000000000# French translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # Hugo Locurcio , 2013-2019. # Jat15, 2013. # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: 2019-03-20 21:10+0100\n" "Last-Translator: Hugo Locurcio \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "Scie circulaire" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" "Matériau\n" "d'entrée" #: circular_saw.lua msgid "Left-over" msgstr "Reste" #: circular_saw.lua msgid "Max" msgstr "Max" #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" "Sortie à\n" "recycler" #: circular_saw.lua msgid "Set" msgstr "Définir" #: circular_saw.lua msgid "owned by @1" msgstr "propriété de @1" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "Scie circulaire vide" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "Scie circulaire manipulant @1" #: init.lua msgid "[moreblocks] loaded." msgstr "[moreblocks] a été chargé." #: nodes.lua msgid "Deprecated" msgstr "déprécié" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "Tronc d'arbre d'acacia (toutes faces)" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "Tronc d'arbre de peuplier (toutes faces)" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "Tronc d'arbre de jungle (toutes faces)" #: nodes.lua msgid "All-faces Pine Tree" msgstr "Tronc d'arbre de pin (toutes faces)" #: nodes.lua msgid "All-faces Tree" msgstr "Tronc d'arbre (toutes faces)" #: nodes.lua msgid "Cactus Brick" msgstr "Briques de cactus" #: nodes.lua msgid "Cactus Checker" msgstr "Damier en cactus" #: nodes.lua msgid "Centered Wooden Tile" msgstr "Dalle en bois centrée" #: nodes.lua msgid "Checker Stone Tile" msgstr "Damier de dalle en pierre" #: nodes.lua msgid "Circle Stone Bricks" msgstr "Briques en pierre circulaires" #: nodes.lua msgid "Clean Glass" msgstr "Verre propre" #: nodes.lua msgid "Coal Checker" msgstr "Damier en charbon" #: nodes.lua msgid "Coal Glass" msgstr "Verre de charbon" #: nodes.lua msgid "Coal Stone" msgstr "Pierre de charbon" #: nodes.lua msgid "Coal Stone Bricks" msgstr "Briques en pierre de charbon" #: nodes.lua msgid "Compressed Cobblestone" msgstr "Pierre taillée compressée" #: nodes.lua msgid "Compressed Dirt" msgstr "Terre compressée" #: nodes.lua msgid "Copper Patina Block" msgstr "Bloc de patine de cuivre" #: nodes.lua msgid "Empty Shelf" msgstr "Étagère vide" #: nodes.lua msgid "Full Wooden Tile" msgstr "Dalle en bois complète" #: nodes.lua msgid "Glow Glass" msgstr "Verre brillant" #: nodes.lua msgid "Iron Checker" msgstr "Damier de fer" #: nodes.lua msgid "Iron Glass" msgstr "Verre de fer" #: nodes.lua msgid "Iron Stone" msgstr "Pierre de fer" #: nodes.lua msgid "Iron Stone Bricks" msgstr "Briques en pierre de fer" #: nodes.lua msgid "Plankstone" msgstr "Pierre-bois" #: nodes.lua msgid "Rope" msgstr "Corde" #: nodes.lua msgid "Split Stone Tile" msgstr "Dalle en pierre découpée" #: nodes.lua msgid "Stone Bricks" msgstr "Briques en pierre" #: nodes.lua msgid "Stone Tile" msgstr "Dalle en pierre" #: nodes.lua msgid "Super Glow Glass" msgstr "Verre très brillant" #: nodes.lua msgid "Sweeper" msgstr "Balai" #: nodes.lua msgid "Tar" msgstr "Bitume" #: nodes.lua msgid "Trap Desert Stone" msgstr "Pierre du désert traversable" #: nodes.lua msgid "Trap Glass" msgstr "Verre traversable" #: nodes.lua msgid "Trap Glow Glass" msgstr "Verre brillant traversable" #: nodes.lua msgid "Trap Obsidian" msgstr "Obsidienne traversable" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "Verre d'obsidienne traversable" #: nodes.lua msgid "Trap Sandstone" msgstr "Grès traversable" #: nodes.lua msgid "Trap Stone" msgstr "Pierre traversable" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "Verre très brillant traversable" #: nodes.lua msgid "Wooden Tile" msgstr "Dalle en bois" #: nodes.lua msgid "Offset Wooden Tile" msgstr "Dalle en bois décalée" #: nodes.lua msgid "Downwards Wooden Tile" msgstr "Dalle en bois vers le bas" #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "Dalle en bois vers la gauche" #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "Dalle en bois vers la droite" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "Désolé, @1 possède cet endroit." #: ownership.lua msgid "someone" msgstr "quelqu'un" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "Microbloc en %s" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "Demi-dalle en %s" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "Pente en %s" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "Barre en %s" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "Escaliers en %s" moreblocks-2.0.0/locale/it.po000066400000000000000000000107321356674613600161100ustar00rootroot00000000000000# Italian translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # Emon, 2016. # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "Sega circolare" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" "Materiale\n" "iniziale" #: circular_saw.lua msgid "Left-over" msgstr "Scarto" #: circular_saw.lua msgid "Max" msgstr "Max." #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" "Ricicla\n" "finale" #: circular_saw.lua msgid "Set" msgstr "Imp." #: circular_saw.lua msgid "owned by @1" msgstr "" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "Sega circolare, vuota" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "Sega circolare, in funzione su @1" #: init.lua msgid "[moreblocks] loaded." msgstr "[moreblocks] caricato." #: nodes.lua msgid "Deprecated" msgstr "" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "" #: nodes.lua msgid "All-faces Pine Tree" msgstr "" #: nodes.lua msgid "All-faces Tree" msgstr "Albero su ogni lato" #: nodes.lua msgid "Cactus Brick" msgstr "Mattoni di cactus" #: nodes.lua msgid "Cactus Checker" msgstr "Scacchiera in cactus" #: nodes.lua msgid "Centered Wooden Tile" msgstr "Mattonella in legno centrata" #: nodes.lua msgid "Checker Stone Tile" msgstr "" #: nodes.lua msgid "Circle Stone Bricks" msgstr "Mattoni concentrici in pietra" #: nodes.lua msgid "Clean Glass" msgstr "Vetro pulito" #: nodes.lua msgid "Coal Checker" msgstr "Scacchiera in carbone" #: nodes.lua msgid "Coal Glass" msgstr "Vetro e carbone" #: nodes.lua msgid "Coal Stone" msgstr "Pietra in carbone" #: nodes.lua msgid "Coal Stone Bricks" msgstr "Mattoni di pietra in carbone" #: nodes.lua msgid "Compressed Cobblestone" msgstr "" #: nodes.lua msgid "Compressed Dirt" msgstr "" #: nodes.lua msgid "Copper Patina Block" msgstr "" #: nodes.lua msgid "Empty Shelf" msgstr "Scaffale Vuoto" #: nodes.lua msgid "Full Wooden Tile" msgstr "Mattonella in legno pieno" #: nodes.lua msgid "Glow Glass" msgstr "Vetro luminoso" #: nodes.lua msgid "Iron Checker" msgstr "Scacchiera in ferro" #: nodes.lua msgid "Iron Glass" msgstr "Vetro e ferro" #: nodes.lua msgid "Iron Stone" msgstr "Pietra in ferro" #: nodes.lua msgid "Iron Stone Bricks" msgstr "Mattoni di pietra in ferro" #: nodes.lua msgid "Plankstone" msgstr "Pietra e legno" #: nodes.lua msgid "Rope" msgstr "Corda" #: nodes.lua msgid "Split Stone Tile" msgstr "Mattonella in pietra divisa" #: nodes.lua msgid "Stone Bricks" msgstr "" #: nodes.lua msgid "Stone Tile" msgstr "Mattonella in pietra" #: nodes.lua msgid "Super Glow Glass" msgstr "Super vetro luminoso" #: nodes.lua msgid "Sweeper" msgstr "Spazzola" #: nodes.lua msgid "Tar" msgstr "" #: nodes.lua msgid "Trap Desert Stone" msgstr "" #: nodes.lua msgid "Trap Glass" msgstr "Vetro trappola" #: nodes.lua msgid "Trap Glow Glass" msgstr "Vetro luminoso trappola" #: nodes.lua msgid "Trap Obsidian" msgstr "" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "" #: nodes.lua msgid "Trap Sandstone" msgstr "" #: nodes.lua msgid "Trap Stone" msgstr "Pietra trappola" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "Super vetro luminoso trappola" #: nodes.lua msgid "Wooden Tile" msgstr "Mattonella in legno" #: nodes.lua msgid "Offset Wooden Tile" msgstr "" #: nodes.lua msgid "Downwards Wooden Tile" msgstr "" #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "" #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "Spiacente, quel punto è di proprietà di @1" #: ownership.lua msgid "someone" msgstr "qualcuno" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "Microblocco %s" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "Lastra - %s" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "Pannello - %s" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "Scale - %s" moreblocks-2.0.0/locale/pl.po000066400000000000000000000116661356674613600161160ustar00rootroot00000000000000# Polish translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # mat9117, 2019 # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "Piła tarczowa" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" "wejście\n" "materiał" #: circular_saw.lua msgid "Left-over" msgstr "Resztki" #: circular_saw.lua msgid "Max" msgstr "Maks" #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" "Przetwarzanie\n" "Wyjście" #: circular_saw.lua msgid "Set" msgstr "Ustaw" #: circular_saw.lua msgid "owned by @1" msgstr "Należy do @1" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "Piła tarczowa jest pusta" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "Piła tarczowa pracuje na @1" #: init.lua msgid "[moreblocks] loaded." msgstr "[moreblocks] załadowane." #: nodes.lua msgid "Deprecated" msgstr "Przestarzałe" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "Wielostronna tekstura akacji" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "Wielostronna tekstura osiki" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "Wielostronna tekstura drzewa dżunglowego" #: nodes.lua msgid "All-faces Pine Tree" msgstr "Wielostronna tekstura sosny" #: nodes.lua msgid "All-faces Tree" msgstr "Wielostronna tekstura drzewa" #: nodes.lua msgid "Cactus Brick" msgstr "Kaktusowa cegła" #: nodes.lua msgid "Cactus Checker" msgstr "Kaktusowa szachownica" #: nodes.lua msgid "Centered Wooden Tile" msgstr "Wyśrodkowany drewniany kafelek" #: nodes.lua msgid "Checker Stone Tile" msgstr "Kamienna szachownica" #: nodes.lua msgid "Circle Stone Bricks" msgstr "Okrągłe kamienne cegły" #: nodes.lua msgid "Clean Glass" msgstr "Czyste szkło" #: nodes.lua msgid "Coal Checker" msgstr "Węglowa szachownica" #: nodes.lua msgid "Coal Glass" msgstr "Szkło węglowe" #: nodes.lua msgid "Coal Stone" msgstr "Kamień węglowy" #: nodes.lua msgid "Coal Stone Bricks" msgstr "Węglowe kamienne cegły" #: nodes.lua msgid "Compressed Cobblestone" msgstr "Skompresowany bruk" #: nodes.lua msgid "Compressed Dirt" msgstr "Skompresowana ziemia" #: nodes.lua msgid "Copper Patina Block" msgstr "Blok patynowanej miedzi" #: nodes.lua msgid "Empty Shelf" msgstr "Pusta półka" #: nodes.lua msgid "Full Wooden Tile" msgstr "Pełny drewniany kafelek" #: nodes.lua msgid "Glow Glass" msgstr "Świecące szkło" #: nodes.lua msgid "Iron Checker" msgstr "Żelazna szachownica" #: nodes.lua msgid "Iron Glass" msgstr "Żelazne szkło" #: nodes.lua msgid "Iron Stone" msgstr "Żelazny kamień" #: nodes.lua msgid "Iron Stone Bricks" msgstr "Żelazne kamienne cegły" #: nodes.lua msgid "Plankstone" msgstr "Deskokamień" #: nodes.lua msgid "Rope" msgstr "Lina" #: nodes.lua msgid "Split Stone Tile" msgstr "Kamienny blok kafelkowy" #: nodes.lua msgid "Stone Bricks" msgstr "Kamienne cegły" #: nodes.lua msgid "Stone Tile" msgstr "Kamienny kafelek" #: nodes.lua msgid "Super Glow Glass" msgstr "Super świecące szkło" #: nodes.lua msgid "Sweeper" msgstr "Miotła" #: nodes.lua msgid "Tar" msgstr "Smoła" #: nodes.lua msgid "Trap Desert Stone" msgstr "Pułapka z pustynnego kamienia" #: nodes.lua msgid "Trap Glass" msgstr "Szklana pułapka" #: nodes.lua msgid "Trap Glow Glass" msgstr "Pułapka ze świecącego szkłą" #: nodes.lua msgid "Trap Obsidian" msgstr "Obsydianowa pułapka" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "Pułapka z obsydianowego szkła" #: nodes.lua msgid "Trap Sandstone" msgstr "Pułapka z piaskowca" #: nodes.lua msgid "Trap Stone" msgstr "Kamienna pułapka" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "Pułapka z super świecącego szkła" #: nodes.lua msgid "Wooden Tile" msgstr "Drewniany kafelek" #: nodes.lua msgid "Offset Wooden Tile" msgstr "" # @deprecated #: nodes.lua msgid "Downwards Wooden Tile" msgstr "Dolny drewniany kafelek" # @deprecated #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "Lewy drewniany kafelek" # @deprecated #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "Prawy drewniany kafelek" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "Przykro mi, to miejsce należy do @1" #: ownership.lua msgid "someone" msgstr "ktoś" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "%s Mikroblok" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "%s Płyta" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "%s Spad" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "%s Panel" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "%s Schody" moreblocks-2.0.0/locale/ru.po000066400000000000000000000136211356674613600161220ustar00rootroot00000000000000# Russian translation for MOREBLOCKS minetest mod. # Copyright (C) 2018 Hugo Locurcio and contributors # This file is distributed under the same license as the MOREBLOCKS package. # CodeXP , 2018. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: MOREBLOCKS MOD\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 23:30+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "циркулярная пила" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" "Входной\n" "материал" #: circular_saw.lua msgid "Left-over" msgstr "Остатки" #: circular_saw.lua msgid "Max" msgstr "Кол." #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" "Пере-\n" "обработка" #: circular_saw.lua msgid "Set" msgstr "ОК" #: circular_saw.lua msgid "owned by @1" msgstr "принадлежит @1" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "циркулярная пила пустая" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "циркулярная пила, @1 в обработке" #: init.lua msgid "[MOD] moreblocks loaded." msgstr "[MOD] moreblocks загружен." #: nodes.lua msgid "Deprecated" msgstr "устаревший" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "всестороннее бревно акации" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "всестороннее бревно осины" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "всестороннее бревно дерева джунглей" #: nodes.lua msgid "All-faces Pine Tree" msgstr "всестороннее бревно сосновое" #: nodes.lua msgid "All-faces Tree" msgstr "всестороннее бревно дерева" #: nodes.lua msgid "Cactus Brick" msgstr "кирпич из кактуса" #: nodes.lua msgid "Cactus Checker" msgstr "мозаика из кактуса" #: nodes.lua msgid "Centered Wooden Tile" msgstr "деревянная мозаика (центр)" #: nodes.lua msgid "Checker Stone Tile" msgstr "каменная мозаика" #: nodes.lua msgid "Circle Stone Bricks" msgstr "кольцевой камень" #: nodes.lua msgid "Clean Glass" msgstr "чистое стекло" #: nodes.lua msgid "Coal Checker" msgstr "угольная мозаика" #: nodes.lua msgid "Coal Glass" msgstr "угольное стекло" #: nodes.lua msgid "Coal Stone" msgstr "угольный камень" #: nodes.lua msgid "Coal Stone Bricks" msgstr "угольно-каменный кирпич" #: nodes.lua msgid "Compressed Cobblestone" msgstr "прессованный булыжник" #: nodes.lua msgid "Compressed Dirt" msgstr "прессованная земля" #: nodes.lua msgid "Copper Patina Block" msgstr "медный патинированный блок" #: nodes.lua msgid "Empty Shelf" msgstr "пустые полки" #: nodes.lua msgid "Full Wooden Tile" msgstr "деревянная мозаика" #: nodes.lua msgid "Glow Glass" msgstr "светящееся стекло" #: nodes.lua msgid "Iron Checker" msgstr "стальная мозаика" #: nodes.lua msgid "Iron Glass" msgstr "металлизированное стекло" #: nodes.lua msgid "Iron Stone" msgstr "железный камень" #: nodes.lua msgid "Iron Stone Bricks" msgstr "железно-каменный кирпич" #: nodes.lua msgid "Plankstone" msgstr "дерево-каменная мозаика" #: nodes.lua msgid "Rope" msgstr "верёвка" #: nodes.lua msgid "Split Stone Tile" msgstr "каменная мозаика" #: nodes.lua msgid "Stone Bricks" msgstr "каменный кирпич" #: nodes.lua msgid "Stone Tile" msgstr "каменная плитка" #: nodes.lua msgid "Super Glow Glass" msgstr "супер светящееся стекло" #: nodes.lua msgid "Sweeper" msgstr "метёлка" #: nodes.lua msgid "Tar" msgstr "смола" #: nodes.lua msgid "Trap Desert Stone" msgstr "мнимый пустынный камень" #: nodes.lua msgid "Trap Glass" msgstr "мнимое стекло" #: nodes.lua msgid "Trap Glow Glass" msgstr "мнимое светящееся стекло" #: nodes.lua msgid "Trap Obsidian" msgstr "мнимый обсидиан" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "мнимое обсидиановое стекло" #: nodes.lua msgid "Trap Sandstone" msgstr "мнимый песчаник" #: nodes.lua msgid "Trap Stone" msgstr "мнимый камень" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "мнимое супер светящееся стекло" #: nodes.lua msgid "Wooden Tile" msgstr "деревянная мозаика" #: nodes.lua msgid "Offset Wooden Tile" msgstr "деревянная мозаика (сверху)" # @deprecated #: nodes.lua msgid "Downwards Wooden Tile" msgstr "деревянная мозаика (снизу)" # @deprecated #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "деревянная мозаика (слева)" # @deprecated #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "деревянная мозаика (справа)" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "Извините, это принадлежит @1." #: ownership.lua msgid "someone" msgstr "кому-то" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "%s (микроблок)" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "%s (плита)" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "%s (наклон)" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "%s (панель)" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "%s (лестница)" moreblocks-2.0.0/locale/template.pot000066400000000000000000000073551356674613600175020ustar00rootroot00000000000000# Template translation for More Blocks. # Copyright © 2011-2019 Hugo Locurcio and contributors # This file is distributed under the same license as the More Blocks package. # CodeXP , 2018. msgid "" msgstr "" "Project-Id-Version: More Blocks\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-07-13 12:37+0200\n" "PO-Revision-Date: \n" "Last-Translator: CodeXP \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: circular_saw.lua msgid "Circular Saw" msgstr "" #: circular_saw.lua msgid "" "Input\n" "material" msgstr "" #: circular_saw.lua msgid "Left-over" msgstr "" #: circular_saw.lua msgid "Max" msgstr "" #: circular_saw.lua msgid "" "Recycle\n" "output" msgstr "" #: circular_saw.lua msgid "Set" msgstr "" #: circular_saw.lua msgid "owned by @1" msgstr "" #: circular_saw.lua msgid "Circular Saw is empty" msgstr "" #: circular_saw.lua msgid "Circular Saw is working on @1" msgstr "" #: init.lua msgid "[moreblocks] loaded." msgstr "" #: nodes.lua msgid "Deprecated" msgstr "" #: nodes.lua msgid "All-faces Acacia Tree" msgstr "" #: nodes.lua msgid "All-faces Aspen Tree" msgstr "" #: nodes.lua msgid "All-faces Jungle Tree" msgstr "" #: nodes.lua msgid "All-faces Pine Tree" msgstr "" #: nodes.lua msgid "All-faces Tree" msgstr "" #: nodes.lua msgid "Cactus Brick" msgstr "" #: nodes.lua msgid "Cactus Checker" msgstr "" #: nodes.lua msgid "Centered Wooden Tile" msgstr "" #: nodes.lua msgid "Checker Stone Tile" msgstr "" #: nodes.lua msgid "Circle Stone Bricks" msgstr "" #: nodes.lua msgid "Clean Glass" msgstr "" #: nodes.lua msgid "Coal Checker" msgstr "" #: nodes.lua msgid "Coal Glass" msgstr "" #: nodes.lua msgid "Coal Stone" msgstr "" #: nodes.lua msgid "Coal Stone Bricks" msgstr "" #: nodes.lua msgid "Compressed Cobblestone" msgstr "" #: nodes.lua msgid "Compressed Dirt" msgstr "" #: nodes.lua msgid "Copper Patina Block" msgstr "" #: nodes.lua msgid "Empty Shelf" msgstr "" #: nodes.lua msgid "Full Wooden Tile" msgstr "" #: nodes.lua msgid "Glow Glass" msgstr "" #: nodes.lua msgid "Iron Checker" msgstr "" #: nodes.lua msgid "Iron Glass" msgstr "" #: nodes.lua msgid "Iron Stone" msgstr "" #: nodes.lua msgid "Iron Stone Bricks" msgstr "" #: nodes.lua msgid "Plankstone" msgstr "" #: nodes.lua msgid "Rope" msgstr "" #: nodes.lua msgid "Split Stone Tile" msgstr "" #: nodes.lua msgid "Stone Bricks" msgstr "" #: nodes.lua msgid "Stone Tile" msgstr "" #: nodes.lua msgid "Super Glow Glass" msgstr "" #: nodes.lua msgid "Sweeper" msgstr "" #: nodes.lua msgid "Tar" msgstr "" #: nodes.lua msgid "Trap Desert Stone" msgstr "" #: nodes.lua msgid "Trap Glass" msgstr "" #: nodes.lua msgid "Trap Glow Glass" msgstr "" #: nodes.lua msgid "Trap Obsidian" msgstr "" #: nodes.lua msgid "Trap Obsidian Glass" msgstr "" #: nodes.lua msgid "Trap Sandstone" msgstr "" #: nodes.lua msgid "Trap Stone" msgstr "" #: nodes.lua msgid "Trap Super Glow Glass" msgstr "" #: nodes.lua msgid "Wooden Tile" msgstr "" #: nodes.lua msgid "Offset Wooden Tile" msgstr "" # @deprecated #: nodes.lua msgid "Downwards Wooden Tile" msgstr "" # @deprecated #: nodes.lua msgid "Leftwards Wooden Tile" msgstr "" # @deprecated #: nodes.lua msgid "Rightwards Wooden Tile" msgstr "" #: ownership.lua msgid "Sorry, @1 owns that spot." msgstr "" #: ownership.lua msgid "someone" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Microblock" msgstr "" #: stairsplus/common.lua stairsplus/slabs.lua #, lua-format msgid "%s Slab" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Slope" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Panel" msgstr "" #: stairsplus/common.lua #, lua-format msgid "%s Stairs" msgstr "" moreblocks-2.0.0/mod.conf000066400000000000000000000002401356674613600153140ustar00rootroot00000000000000name = moreblocks description = Adds various miscellaneous blocks to the game. depends = default optional_depends = intllib,stairs,farming,wool,basic_materials moreblocks-2.0.0/models/000077500000000000000000000000001356674613600151555ustar00rootroot00000000000000moreblocks-2.0.0/models/moreblocks_slope.obj000066400000000000000000000022371356674613600212170ustar00rootroot00000000000000g top v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.7071 -0.7071 s off f 2/1/1 1/2/1 4/3/1 3/4/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 6/5/2 5/6/2 7/7/2 8/8/2 g right v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 9/9/3 11/10/3 10/11/3 g left v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 12/12/4 13/13/4 14/14/4 g back v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 15/15/5 16/16/5 17/17/5 18/18/5 moreblocks-2.0.0/models/moreblocks_slope_cut.obj000066400000000000000000000026371356674613600220760ustar00rootroot00000000000000g top v 0.500000 0.500000 0.500000 v -0.500000 -0.000000 0.500000 v 0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.5000 0.0000 vt 1.0000 1.0000 vt 0.5000 2.0000 vt 0.0000 1.0000 vn -0.4082 0.8165 -0.4082 s 1 f 4/1/1 2/2/1 1/3/1 3/4/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s 1 f 6/5/2 5/6/2 8/7/2 7/8/2 g right v -0.500000 -0.500000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vn -1.0000 0.0000 0.0000 s 1 f 11/9/3 9/10/3 10/11/3 g left v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vt 0.0000 1.0000 vn 1.0000 0.0000 0.0000 s 1 f 12/12/4 14/13/4 15/14/4 13/15/4 g back v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v -0.500000 -0.000000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 0.5000 vn -0.0000 -0.0000 1.0000 s 1 f 16/16/5 17/17/5 18/18/5 19/19/5 g front v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 0.5000 vn 0.0000 0.0000 -1.0000 s 1 f 20/20/6 22/21/6 21/22/6 moreblocks-2.0.0/models/moreblocks_slope_half.obj000066400000000000000000000022451356674613600222100ustar00rootroot00000000000000g top v 0.500000 -0.000000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.8944 -0.4472 s off f 2/1/1 1/2/1 4/3/1 3/4/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 6/5/2 5/6/2 7/7/2 8/8/2 g right v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 9/9/3 11/10/3 10/11/3 g left v 0.500000 -0.000000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 12/12/4 13/13/4 14/14/4 g back v 0.500000 -0.000000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 0.5000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 15/15/5 16/16/5 17/17/5 18/18/5 moreblocks-2.0.0/models/moreblocks_slope_half_raised.obj000066400000000000000000000030251356674613600235340ustar00rootroot00000000000000g top v -0.500000 0.500000 0.500000 v -0.500000 0.000000 -0.500000 v 0.500000 0.000000 -0.500000 v 0.500000 0.500000 0.500000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vn 0.0000 0.8944 -0.4472 s off f 2/1/1 1/2/1 4/3/1 3/4/1 g bottom v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s off f 6/5/2 5/6/2 7/7/2 8/8/2 g right v -0.500000 0.500000 0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 9/9/3 10/10/3 11/11/3 12/12/3 g left v 0.500000 0.000000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 0.5000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 13/13/4 15/14/4 16/15/4 14/16/4 g back v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 19/17/5 17/18/5 18/19/5 20/20/5 g front v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 0.5000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off f 21/21/6 23/22/6 24/23/6 22/24/6 moreblocks-2.0.0/models/moreblocks_slope_inner.obj000066400000000000000000000032371356674613600224130ustar00rootroot00000000000000g top v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vn 0.0000 0.7071 -0.7071 vn -0.7071 0.7071 0.0000 s 1 f 3/1/1 2/2/1 4/3/1 f 2/4/2 1/5/2 5/6/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s 1 f 9/7/3 7/8/3 6/9/3 8/10/3 l 8 10 g right v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s 1 f 11/11/4 12/12/4 13/13/4 g left v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s 1 f 14/14/5 15/15/5 16/16/5 17/17/5 l 15 18 g back v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -0.0000 1.0000 s 1 f 22/18/6 20/19/6 19/20/6 21/21/6 l 22 23 l 19 23 g front v 0.500000 0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.0000 -1.0000 s 1 f 24/22/7 25/23/7 27/24/7 moreblocks-2.0.0/models/moreblocks_slope_inner_cut.obj000066400000000000000000000027451356674613600232710ustar00rootroot00000000000000g top v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.5000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 1.0000 0.0000 vn -0.5774 0.5774 -0.5774 s 1 f 3/1/1 2/2/1 1/3/1 f 4/4/2 3/5/2 1/6/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s 1 f 6/7/3 5/8/3 7/9/3 8/10/3 g right v -0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn -1.0000 0.0000 0.0000 s 1 f 11/11/4 9/12/4 10/13/4 g left v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 1.0000 0.0000 0.0000 s 1 f 12/14/5 13/15/5 14/16/5 15/17/5 g back v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -0.0000 1.0000 s 1 f 18/18/6 16/19/6 17/20/6 19/21/6 g front v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 s 1 f 20/22/7 22/23/7 21/24/7 moreblocks-2.0.0/models/moreblocks_slope_inner_cut_half.obj000066400000000000000000000027531356674613600242620ustar00rootroot00000000000000g top v 0.500000 0.000000 -0.500000 v 0.500000 -0.000000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.5000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 1.0000 0.0000 vn -0.4082 0.8165 -0.4082 s 1 f 3/1/1 2/2/1 1/3/1 f 4/4/2 3/5/2 1/6/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s 1 f 6/7/3 5/8/3 7/9/3 8/10/3 g right v -0.500000 -0.500000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vn -1.0000 0.0000 0.0000 s 1 f 11/11/4 9/12/4 10/13/4 g left v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 v 0.500000 -0.000000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vt 0.0000 0.5000 vn 1.0000 0.0000 0.0000 s 1 f 12/14/5 13/15/5 14/16/5 15/17/5 g back v 0.500000 -0.500000 0.500000 v 0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.000000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vt 0.0000 0.5000 vn 0.0000 -0.0000 1.0000 s 1 f 18/18/6 16/19/6 17/20/6 19/21/6 g front v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 0.5000 vn 0.0000 0.0000 -1.0000 s 1 f 20/22/7 22/23/7 21/24/7 moreblocks-2.0.0/models/moreblocks_slope_inner_cut_half_raised.obj000066400000000000000000000031251356674613600256030ustar00rootroot00000000000000g top v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 0.000000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.5000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 1.0000 0.0000 vn -0.4082 0.8165 -0.4082 s 1 f 3/1/1 2/2/1 1/3/1 f 4/4/2 3/5/2 1/6/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s 1 f 6/7/3 5/8/3 7/9/3 8/10/3 g right v -0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 0.000000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 0.5000 vn -1.0000 0.0000 0.0000 s 1 f 11/11/4 9/12/4 10/13/4 12/14/4 g left v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 1.0000 0.0000 0.0000 s 1 f 13/15/5 14/16/5 15/17/5 16/18/5 g back v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -0.0000 1.0000 s 1 f 19/19/6 17/20/6 18/21/6 20/22/6 g front v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 0.000000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vt 0.0000 1.0000 vn -0.0000 0.0000 -1.0000 s 1 f 21/23/7 23/24/7 24/25/7 22/26/7 moreblocks-2.0.0/models/moreblocks_slope_inner_half.obj000066400000000000000000000034001356674613600233750ustar00rootroot00000000000000g top v 0.500000 0.000000 -0.500000 v 0.500000 -0.000000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vn 0.0000 0.8944 -0.4472 vn -0.4472 0.8944 0.0000 s off f 3/1/1 2/2/1 4/3/1 f 2/4/2 1/5/2 5/6/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s off f 10/7/3 7/8/3 6/9/3 9/10/3 l 9 8 l 11 9 g right v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 12/11/4 13/12/4 14/13/4 l 15 14 g left v 0.500000 0.000000 -0.500000 v 0.500000 -0.000000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 16/14/5 17/15/5 18/16/5 19/17/5 l 20 17 g back v 0.500000 -0.000000 0.500000 v 0.500000 -0.500000 0.500000 v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -0.0000 1.0000 s off f 24/18/6 22/19/6 21/20/6 23/21/6 l 25 24 l 25 21 g front v 0.500000 0.000000 -0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off f 26/22/7 27/23/7 29/24/7 moreblocks-2.0.0/models/moreblocks_slope_inner_half_raised.obj000066400000000000000000000034561356674613600247370ustar00rootroot00000000000000g top v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 0.000000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 1.0000 0.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 0.8944 -0.4472 vn -0.4472 0.8944 0.0000 s off f 3/1/1 2/2/1 4/3/1 f 2/2/2 1/4/2 5/5/2 g bottom v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s off f 8/6/3 9/7/3 7/8/3 6/9/3 l 10 8 g right v -0.500000 0.500000 0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 0.5000 vt 0.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 13/10/4 11/11/4 12/12/4 15/13/4 g left v 0.500000 0.500000 -0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 16/14/5 17/15/5 18/16/5 19/17/5 l 20 17 g back v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 1.0000 vn 0.0000 -0.0000 1.0000 s off f 24/18/6 22/19/6 21/20/6 23/21/6 l 25 21 l 25 24 g front v 0.500000 0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 0.5000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -0.0000 0.0000 -1.0000 s off f 28/22/7 26/23/7 27/24/7 30/25/7 l 29 26 moreblocks-2.0.0/models/moreblocks_slope_outer.obj000066400000000000000000000017441356674613600224370ustar00rootroot00000000000000g top v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -0.7071 0.7071 0.0000 vn 0.0000 0.7071 -0.7071 s off f 4/1/1 2/2/1 1/3/1 f 4/4/2 3/5/2 2/6/2 g bottom v 0.500000 -0.500000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s off f 5/7/3 6/8/3 7/9/3 8/10/3 g right v 0.500000 -0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn 0.0000 -0.0000 1.0000 s off f 10/11/4 9/12/4 11/13/4 g left v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 14/14/5 12/15/5 13/16/5 moreblocks-2.0.0/models/moreblocks_slope_outer_cut.obj000066400000000000000000000014501356674613600233040ustar00rootroot00000000000000g top v 0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 0.0000 vt 0.5000 1.0000 vt 0.0000 0.0000 vn -0.5774 0.5774 -0.5774 s off f 2/1/1 1/2/1 3/3/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 5/4/2 4/5/2 6/6/2 g right v 0.500000 0.500000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 7/7/3 8/8/3 9/9/3 g left v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 0.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 12/10/4 10/11/4 11/12/4 moreblocks-2.0.0/models/moreblocks_slope_outer_cut_half.obj000066400000000000000000000014531356674613600243010ustar00rootroot00000000000000g top v 0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 0.0000 vt 0.5000 1.0000 vt 0.0000 0.0000 vn -0.4082 0.8165 -0.4082 s off f 2/1/1 1/2/1 3/3/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 0.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 5/4/2 4/5/2 6/6/2 g right v 0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 7/7/3 8/8/3 9/9/3 g left v 0.500000 -0.000000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 1.0000 0.0000 vt 0.0000 0.5000 vt 0.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 12/10/4 10/11/4 11/12/4 moreblocks-2.0.0/models/moreblocks_slope_outer_cut_half_raised.obj000066400000000000000000000022371356674613600256310ustar00rootroot00000000000000g top v -0.500000 -0.000000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 0.000000 -0.500000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn -0.4082 0.8165 -0.4082 s off f 1/1/1 2/2/1 3/3/1 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 vt 0.0000 1.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 4/4/2 6/5/2 5/6/2 g right v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 vt 1.0000 0.0000 vt 1.0000 0.5000 vt 0.0000 0.5000 vt 0.0000 0.0000 vn -0.7071 0.0000 -0.7071 s off f 8/7/3 7/8/3 10/9/3 9/10/3 g left v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vn 1.0000 0.0000 0.0000 s off f 12/11/4 11/12/4 13/13/4 14/14/4 g back v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn -0.0000 -0.0000 1.0000 s off f 15/15/5 16/16/5 17/17/5 18/18/5 moreblocks-2.0.0/models/moreblocks_slope_outer_half.obj000066400000000000000000000017471356674613600234340ustar00rootroot00000000000000g top v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.000000 0.500000 vt 1.0000 0.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vt 0.0000 0.0000 vn 0.0000 0.8944 -0.4472 vn -0.4472 0.8944 0.0000 s off f 2/1/1 4/2/1 3/3/1 f 1/4/2 4/5/2 2/6/2 g bottom v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 vt 1.0000 1.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -1.0000 -0.0000 s off f 5/7/3 6/8/3 7/9/3 8/10/3 g right v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.000000 0.500000 vt 1.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn 0.0000 -0.0000 1.0000 s off f 11/11/4 9/12/4 10/13/4 g left v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.000000 0.500000 vt 1.0000 0.0000 vt 0.0000 0.5000 vt 0.0000 0.0000 vn 1.0000 0.0000 0.0000 s off f 12/14/5 14/15/5 13/16/5 moreblocks-2.0.0/models/moreblocks_slope_outer_half_raised.obj000066400000000000000000000031001356674613600247440ustar00rootroot00000000000000g top v -0.500000 -0.000000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 0.000000 -0.500000 v -0.500000 0.000000 -0.500000 vt 1.0000 0.0000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 1.0000 vn 0.0000 0.8944 -0.4472 vn -0.4472 0.8944 0.0000 s off f 4/1/1 2/2/1 3/3/1 f 4/1/2 1/4/2 2/2/2 g bottom v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn 0.0000 -1.0000 -0.0000 s off f 7/5/3 6/6/3 5/7/3 8/8/3 g right v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 1.0000 0.5000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vn -1.0000 0.0000 0.0000 s off f 9/9/4 11/10/4 12/11/4 10/12/4 g left v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 vt 0.0000 1.0000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vn 1.0000 0.0000 0.0000 s off f 14/13/5 13/14/5 15/15/5 16/16/5 g back v -0.500000 -0.000000 0.500000 v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000 v 0.500000 0.500000 0.500000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 1.0000 vn -0.0000 -0.0000 1.0000 s off f 17/17/6 18/18/6 19/19/6 20/20/6 g front v 0.500000 -0.500000 -0.500000 v 0.500000 0.000000 -0.500000 v -0.500000 0.000000 -0.500000 v -0.500000 -0.500000 -0.500000 vt 0.0000 0.5000 vt 0.0000 0.0000 vt 1.0000 0.0000 vt 1.0000 0.5000 vn 0.0000 0.0000 -1.0000 s off f 22/21/7 21/22/7 24/23/7 23/24/7 moreblocks-2.0.0/nodes.lua000066400000000000000000000370421356674613600155130ustar00rootroot00000000000000--[[ More Blocks: node definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.S local sound_dirt = default.node_sound_dirt_defaults() local sound_wood = default.node_sound_wood_defaults() local sound_stone = default.node_sound_stone_defaults() local sound_glass = default.node_sound_glass_defaults() local sound_leaves = default.node_sound_leaves_defaults() -- Don't break on 0.4.14 and earlier. local sound_metal = (default.node_sound_metal_defaults and default.node_sound_metal_defaults() or sound_stone) local function tile_tiles(name) local tex = "moreblocks_" ..name.. ".png" return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"} end local function wood_tile_replace(itemstack, placer, pointed_thing) local substack if itemstack:get_name() == "moreblocks:wood_tile_flipped" then substack = ItemStack("moreblocks:wood_tile") else -- right, left, and down variants substack = ItemStack("moreblocks:wood_tile_offset") end local _, success = minetest.item_place(substack, placer, pointed_thing) if success then itemstack:take_item() end return itemstack end local deprecated = (" (%s)"):format(S('Deprecated')) local nodes = { ["wood_tile"] = { description = S("Wooden Tile"), groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, is_ground_content = false, paramtype2 = "facedir", place_param2 = 0, tiles = {"default_wood.png^moreblocks_wood_tile.png", "default_wood.png^moreblocks_wood_tile.png", "default_wood.png^moreblocks_wood_tile.png", "default_wood.png^moreblocks_wood_tile.png", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90"}, sounds = sound_wood, }, ["wood_tile_flipped"] = { description = S("Wooden Tile") .. deprecated, tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR180", "default_wood.png^moreblocks_wood_tile.png^[transformR180"}, no_stairs = true, on_place = wood_tile_replace }, ["wood_tile_center"] = { description = S("Centered Wooden Tile"), groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, is_ground_content = false, tiles = {"default_wood.png^moreblocks_wood_tile_center.png"}, sounds = sound_wood, }, ["wood_tile_full"] = { description = S("Full Wooden Tile"), groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, is_ground_content = false, tiles = tile_tiles("wood_tile_full"), sounds = sound_wood, }, ["wood_tile_offset"] = { description = S("Offset Wooden Tile"), paramtype2 = "facedir", place_param2 = 0, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, is_ground_content = false, tiles = {"default_wood.png^moreblocks_wood_tile_offset.png"}, sounds = sound_wood, no_stairs = true, }, ["wood_tile_down"] = { description = S("Downwards Wooden Tile") .. deprecated, tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_offset.png^[transformR180"}, no_stairs = true, on_place = wood_tile_replace }, ["wood_tile_left"] = { description = S("Leftwards Wooden Tile") .. deprecated, tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_offset.png^[transformR270"}, no_stairs = true, on_place = wood_tile_replace }, ["wood_tile_right"] = { description = S("Rightwards Wooden Tile") .. deprecated, tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_offset.png^[transformR90"}, no_stairs = true, on_place = wood_tile_replace }, ["circle_stone_bricks"] = { description = S("Circle Stone Bricks"), groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["grey_bricks"] = { description = S("Stone Bricks"), paramtype2 = "facedir", place_param2 = 0, groups = {cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["coal_stone_bricks"] = { description = S("Coal Stone Bricks"), paramtype2 = "facedir", place_param2 = 0, groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["iron_stone_bricks"] = { description = S("Iron Stone Bricks"), paramtype2 = "facedir", place_param2 = 0, groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["stone_tile"] = { description = S("Stone Tile"), groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["split_stone_tile"] = { description = S("Split Stone Tile"), paramtype2 = "facedir", place_param2 = 0, tiles = {"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"}, groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["checker_stone_tile"] = { description = S("Checker Stone Tile"), groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["tar"] = { description = S("Tar"), groups = {cracky=2, tar_block=1}, is_ground_content = false, sounds = sound_stone, }, ["dirt_compressed"] = { description = S("Compressed Dirt"), groups = {crumbly=2}, is_ground_content = false, sounds = sound_dirt, }, ["cobble_compressed"] = { description = S("Compressed Cobblestone"), groups = {cracky = 1}, is_ground_content = false, sounds = sound_stone, }, ["plankstone"] = { description = S("Plankstone"), paramtype2 = "facedir", place_param2 = 0, groups = {cracky = 3}, is_ground_content = false, tiles = tile_tiles("plankstone"), sounds = sound_stone, }, ["iron_glass"] = { description = S("Iron Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#DEDEDE", "default_glass_detail.png^[colorize:#DEDEDE"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["coal_glass"] = { description = S("Coal Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#828282", "default_glass_detail.png^[colorize:#828282"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["clean_glass"] = { description = S("Clean Glass"), drawtype = "glasslike_framed_optional", tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["cactus_brick"] = { description = S("Cactus Brick"), paramtype2 = "facedir", place_param2 = 0, groups = {cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["cactus_checker"] = { description = S("Cactus Checker"), groups = {stone = 1, cracky = 3}, is_ground_content = false, tiles = {"default_stone.png^moreblocks_cactus_checker.png", "default_stone.png^moreblocks_cactus_checker.png", "default_stone.png^moreblocks_cactus_checker.png", "default_stone.png^moreblocks_cactus_checker.png", "default_stone.png^moreblocks_cactus_checker.png^[transformR90", "default_stone.png^moreblocks_cactus_checker.png^[transformR90"}, sounds = sound_stone, }, ["empty_shelf"] = { description = S("Empty Shelf"), paramtype2 = "facedir", tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "moreblocks_empty_shelf.png", "moreblocks_empty_shelf.png"}, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, is_ground_content = false, sounds = sound_wood, furnace_burntime = 15, no_stairs = true, }, ["coal_stone"] = { description = S("Coal Stone"), groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["iron_stone"] = { description = S("Iron Stone"), groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["coal_checker"] = { description = S("Coal Checker"), tiles = {"default_stone.png^moreblocks_coal_checker.png", "default_stone.png^moreblocks_coal_checker.png", "default_stone.png^moreblocks_coal_checker.png", "default_stone.png^moreblocks_coal_checker.png", "default_stone.png^moreblocks_coal_checker.png^[transformR90", "default_stone.png^moreblocks_coal_checker.png^[transformR90"}, groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["iron_checker"] = { description = S("Iron Checker"), tiles = {"default_stone.png^moreblocks_iron_checker.png", "default_stone.png^moreblocks_iron_checker.png", "default_stone.png^moreblocks_iron_checker.png", "default_stone.png^moreblocks_iron_checker.png", "default_stone.png^moreblocks_iron_checker.png^[transformR90", "default_stone.png^moreblocks_iron_checker.png^[transformR90"}, groups = {stone = 1, cracky = 3}, is_ground_content = false, sounds = sound_stone, }, ["trap_stone"] = { description = S("Trap Stone"), drawtype = "glasslike_framed", tiles = {"default_stone.png^moreblocks_trap_box.png"}, walkable = false, groups = {cracky = 3}, paramtype = "light", is_ground_content = false, sounds = sound_stone, no_stairs = true, }, ["trap_desert_stone"] = { description = S("Trap Desert Stone"), drawtype = "glasslike_framed", tiles = {"default_desert_stone.png^moreblocks_trap_box.png"}, walkable = false, groups = {cracky = 3}, paramtype = "light", is_ground_content = false, sounds = sound_stone, no_stairs = true, }, ["trap_glass"] = { description = S("Trap Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^moreblocks_trap_box_glass.png", "default_glass_detail.png"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, walkable = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, no_stairs = true, }, ["trap_obsidian_glass"] = { description = S("Trap Obsidian Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_obsidian_glass.png^moreblocks_trap_box_glass.png", "default_obsidian_glass_detail.png"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, walkable = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, no_stairs = true, }, ["trap_obsidian"] = { description = S("Trap Obsidian"), drawtype = "glasslike_framed", tiles = {"default_obsidian.png^moreblocks_trap_box.png"}, walkable = false, groups = {cracky = 1, level = 2}, paramtype = "light", is_ground_content = false, sounds = sound_stone, no_stairs = true, }, ["trap_sandstone"] = { description = S("Trap Sandstone"), drawtype = "glasslike_framed", tiles = {"default_sandstone.png^moreblocks_trap_box.png"}, walkable = false, groups = {crumbly = 1, cracky = 3}, paramtype = "light", is_ground_content = false, sounds = sound_stone, no_stairs = true, }, ["all_faces_tree"] = { description = S("All-faces Tree"), tiles = {"default_tree_top.png"}, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = sound_wood, furnace_burntime = 30, }, ["all_faces_jungle_tree"] = { description = S("All-faces Jungle Tree"), tiles = {"default_jungletree_top.png"}, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = sound_wood, furnace_burntime = 38, }, ["all_faces_pine_tree"] = { description = S("All-faces Pine Tree"), tiles = {"default_pine_tree_top.png"}, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = sound_wood, furnace_burntime = 26, }, ["all_faces_acacia_tree"] = { description = S("All-faces Acacia Tree"), tiles = {"default_acacia_tree_top.png"}, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = sound_wood, furnace_burntime = 34, }, ["all_faces_aspen_tree"] = { description = S("All-faces Aspen Tree"), tiles = {"default_aspen_tree_top.png"}, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = sound_wood, furnace_burntime = 22, }, ["glow_glass"] = { description = S("Glow Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#E9CD61", "default_glass_detail.png^[colorize:#E9CD61"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, light_source = 11, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["trap_glow_glass"] = { description = S("Trap Glow Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#E9CD61"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, light_source = 11, walkable = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, no_stairs = true, }, ["super_glow_glass"] = { description = S("Super Glow Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#FFFF78", "default_glass_detail.png^[colorize:#FFFF78"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, light_source = default.LIGHT_MAX, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["trap_super_glow_glass"] = { description = S("Trap Super Glow Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#FFFF78"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, light_source = default.LIGHT_MAX, walkable = false, groups = {cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, no_stairs = true, }, ["rope"] = { description = S("Rope"), drawtype = "signlike", inventory_image = "moreblocks_rope.png", wield_image = "moreblocks_rope.png", paramtype = "light", sunlight_propagates = true, is_ground_content = false, paramtype2 = "wallmounted", walkable = false, climbable = true, selection_box = {type = "wallmounted",}, groups = {snappy = 3, flammable = 2}, sounds = sound_leaves, no_stairs = true, }, ["copperpatina"] = { description = S("Copper Patina Block"), groups = {cracky = 1, level = 2}, is_ground_content = false, sounds = sound_metal, }, } for name, def in pairs(nodes) do def.tiles = def.tiles or {"moreblocks_" ..name.. ".png"} minetest.register_node("moreblocks:" ..name, def) minetest.register_alias(name, "moreblocks:" ..name) def_copy = table.copy(def) -- Use the primary tile for all sides of cut glasslike nodes. -- This makes them easier to see if #def_copy.tiles > 1 and def_copy.drawtype and def_copy.drawtype == "glasslike_framed" or def_copy.drawtype == "glasslike_framed_optional" then def.tiles = {def_copy.tiles[1]} end if not def.no_stairs then local groups = {} for k, v in pairs(def.groups) do groups[k] = v end stairsplus:register_all("moreblocks", name, "moreblocks:" ..name, { description = def.description, groups = groups, tiles = def.tiles, sunlight_propagates = def.sunlight_propagates, light_source = def.light_source, sounds = def.sounds, }) end end -- Items minetest.register_craftitem("moreblocks:sweeper", { description = S("Sweeper"), inventory_image = "moreblocks_sweeper.png", }) moreblocks-2.0.0/ownership.lua000066400000000000000000000023711356674613600164160ustar00rootroot00000000000000--[[ More Blocks: ownership handling Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.S function moreblocks.node_is_owned(pos, placer) local ownername = false if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod if HasOwner(pos, placer) then -- returns true if the node is owned if not IsPlayerNodeOwner(pos, placer:get_player_name()) then if type(getLastOwner) == "function" then -- ...is an old version ownername = getLastOwner(pos) elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version ownername = GetNodeOwnerName(pos) else ownername = S("someone") end end end elseif type(isprotect)=="function" then -- glomie's protection mod if not isprotect(5, pos, placer) then ownername = S("someone") end elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod if not protector.can_dig(5, pos, placer) then ownername = S("someone") end end if ownername ~= false then minetest.chat_send_player( placer:get_player_name(), S("Sorry, @1 owns that spot.", ownername) ) return true else return false end end moreblocks-2.0.0/redefinitions.lua000066400000000000000000000023631356674613600172430ustar00rootroot00000000000000--[[ More Blocks: redefinitions of default stuff Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- 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 4", recipe = { {"default:stick", "", "default:stick"}, {"default:stick", "default:stick", "default:stick"}, {"default:stick", "", "default:stick"}, } }) minetest.clear_craft({ recipe = { {"default:papyrus", "default:papyrus", "default:papyrus"} } }) minetest.register_craft({ output = "default:paper 4", recipe = { {"default:papyrus", "default:papyrus", "default:papyrus"}, } }) minetest.register_craft({ output = "default:rail 24", recipe = { {"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "default:stick", "default:steel_ingot"}, {"default:steel_ingot", "", "default:steel_ingot"}, } }) minetest.register_craft({ type = "toolrepair", additional_wear = -0.10, -- Tool repair buff (10% bonus instead of 2%). }) moreblocks-2.0.0/settingtypes.txt000066400000000000000000000003021356674613600171700ustar00rootroot00000000000000# If enabled, Stairs+ nodes will be displayed in the inventory when playing in creative mode. moreblocks.stairsplus_in_creative_inventory (Display Stairs+ nodes in creative inventory) bool true moreblocks-2.0.0/stairsplus/000077500000000000000000000000001356674613600161035ustar00rootroot00000000000000moreblocks-2.0.0/stairsplus/API.md000066400000000000000000000051251356674613600170410ustar00rootroot00000000000000# API documentation for Stairs+ * `stairsplus:register_all(modname, subname, recipeitem, fields)` Registers a stair, slab, panel, microblock, and any other types of nodes to be added in the future. This also registers the node with the circular saw. Example: ```lua stairsplus:register_all("moreblocks", "wood", "default:wood", { description = "Wooden", tiles = {"default_wood.png"}, groups = {oddly_breakabe_by_hand=1}, sounds = default.node_sound_wood_defaults(), }) ``` The following register only a particular type of microblock. You will probably never want to use them directly: * `stairsplus:register_stair(modname, subname, recipeitem, fields)` * `stairsplus:register_slab(modname, subname, recipeitem, fields)` * `stairsplus:register_panel(modname, subname, recipeitem, fields)` * `stairsplus:register_micro(modname, subname, recipeitem, fields)` * `stairsplus:register_slope(modname, subname, recipeitem, fields)` If you only want to register a subset of stairsplus nodes, you can use the `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)` function. The subset table should have the following format: ```lua local subset = { { "micro", "" }, { "micro", "_1" }, { "micro", "_2" }, { "micro", "_4" }, { "micro", "_12" }, { "micro", "_14" }, { "micro", "_15" }, { "panel", "" }, { "panel", "_1" }, { "panel", "_2" }, { "panel", "_4" }, { "panel", "_12" }, { "panel", "_14" }, { "panel", "_15" }, { "slab", "" }, { "slab", "_quarter" }, { "slab", "_three_quarter" }, { "slab", "_1" }, { "slab", "_2" }, { "slab", "_14" }, { "slab", "_15" }, { "slab", "_two_sides" }, { "slab", "_three_sides" }, { "slab", "_three_sides_u" }, { "slope", "" }, { "slope", "_half" }, { "slope", "_half_raised" }, { "slope", "_inner" }, { "slope", "_inner_half" }, { "slope", "_inner_half_raised" }, { "slope", "_inner_cut" }, { "slope", "_inner_cut_half" }, { "slope", "_inner_cut_half_raised" }, { "slope", "_outer" }, { "slope", "_outer_half" }, { "slope", "_outer_half_raised" }, { "slope", "_outer_cut" }, { "slope", "_outer_cut_half" }, { "slope", "_outer_cut_half_raised" }, { "slope", "_cut" }, { "stair", "" }, { "stair", "_half" }, { "stair", "_right_half" }, { "stair", "_inner" }, { "stair", "_outer" }, { "stair", "_alt" }, { "stair", "_alt_1" }, { "stair", "_alt_2" }, { "stair", "_alt_4" }, } ``` You can remove entries as needed. moreblocks-2.0.0/stairsplus/aliases.lua000066400000000000000000000131101356674613600202230ustar00rootroot00000000000000--[[ More Blocks: alias definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local function 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", "pinewood", "pinewood") 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", "pinetree", "pinetree") 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-2.0.0/stairsplus/common.lua000066400000000000000000000037111356674613600201000ustar00rootroot00000000000000--[[ More Blocks: registrations Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.S local descriptions = { ["micro"] = S("%s Microblock"), ["slab"] = S("%s Slab"), ["slope"] = S("%s Slope"), ["panel"] = S("%s Panel"), ["stair"] = S("%s Stairs"), } stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields) local desc_base = descriptions[category]:format(fields.description) local def = {} if category ~= "slab" then def = table.copy(info) end -- copy fields to def for k, v in pairs(fields) do def[k] = v end def.drawtype = "nodebox" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" -- This makes node rotation work on placement def.place_param2 = nil -- Darken light sources slightly to make up for their smaller visual size def.light_source = math.max(0, (def.light_source or 0) - 1) def.on_place = minetest.rotate_node def.groups = stairsplus:prepare_groups(fields.groups) if category == "slab" then if type(info) ~= "table" then def.node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, (info/16)-0.5, 0.5}, } def.description = ("%s (%d/16)"):format(desc_base, info) else def.node_box = { type = "fixed", fixed = info, } def.description = desc_base .. alternate:gsub("_", " "):gsub("(%a)(%S*)", function(a, b) return a:upper() .. b end) end else def.description = desc_base if category == "slope" then def.drawtype = "mesh" elseif category == "stair" and alternate == "" then def.groups.stair = 1 end end if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":" .. category .. "_" .. fields.drop .. alternate end minetest.register_node(":" ..modname.. ":" .. category .. "_" .. subname .. alternate, def) stairsplus.register_recipes(category, alternate, modname, subname, recipeitem) end moreblocks-2.0.0/stairsplus/conversion.lua000066400000000000000000000100521356674613600207710ustar00rootroot00000000000000--[[ More Blocks: conversion Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- 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 stairsplus: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 _, object in pairs(objects_list1) do local flip_upside_down = false local flip_to_wall = false local dest_object = object if string.find(dest_object, "_inverted") then flip_upside_down = true dest_object = string.gsub(dest_object, "_inverted", "") end if string.find(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 local nfdir 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.set_node(pos, {name = dest_object, param2 = nfdir}) end }) end for _, object in pairs(objects_list2) do local flip_upside_down = false local flip_to_wall = false local dest_object = object 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.set_node(pos, {name = dest_object, param2 = nfdir}) end }) end end moreblocks-2.0.0/stairsplus/custom.lua000066400000000000000000000055311356674613600201240ustar00rootroot00000000000000--[[ More Blocks: microblock definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] --[[ Subset table should have the following format: (You can remove entries as needed.) local subset = { { "micro", "" }, { "micro", "_1" }, { "micro", "_2" }, { "micro", "_4" }, { "micro", "_12" }, { "micro", "_14" }, { "micro", "_15" }, { "panel", "" }, { "panel", "_1" }, { "panel", "_2" }, { "panel", "_4" }, { "panel", "_12" }, { "panel", "_14" }, { "panel", "_15" }, { "slab", "" }, { "slab", "_quarter" }, { "slab", "_three_quarter" }, { "slab", "_1" }, { "slab", "_2" }, { "slab", "_14" }, { "slab", "_15" }, { "slab", "_two_sides" }, { "slab", "_three_sides" }, { "slab", "_three_sides_u" }, { "slope", "" }, { "slope", "_half" }, { "slope", "_half_raised" }, { "slope", "_inner" }, { "slope", "_inner_half" }, { "slope", "_inner_half_raised" }, { "slope", "_inner_cut" }, { "slope", "_inner_cut_half" }, { "slope", "_inner_cut_half_raised" }, { "slope", "_outer" }, { "slope", "_outer_half" }, { "slope", "_outer_half_raised" }, { "slope", "_outer_cut" }, { "slope", "_outer_cut_half" }, { "slope", "_outer_cut_half_raised" }, { "slope", "_cut" }, { "stair", "" }, { "stair", "_half" }, { "stair", "_right_half" }, { "stair", "_inner" }, { "stair", "_outer" }, { "stair", "_alt" }, { "stair", "_alt_1" }, { "stair", "_alt_2" }, { "stair", "_alt_4" }, } --]] -- luacheck: no unused local function register_custom_subset(subset, modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_custom_subset(subset, modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_custom_subset_alias(subset, modname_old, subname_old, modname_new, subname_new) local subset_copy = table.copy(subset) for k, v in pairs(subset_copy) do minetest.register_alias(modname_old .. ":" .. v[1] .. "_" .. subname_old .. v[2], modname_new .. ":" .. v[1] .. "_" .. subname_new .. v[2]) end end function stairsplus:register_custom_subset_alias_force(subset, modname_old, subname_old, modname_new, subname_new) local subset_copy = table.copy(subset) for k, v in pairs(subset_copy) do minetest.register_alias_force(modname_old .. ":" .. v[1] .. "_" .. subname_old .. v[2], modname_new .. ":" .. v[1] .. "_" .. subname_new .. v[2]) end end function stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields) local subset_copy = table.copy(subset) for k, v in pairs(subset_copy) do stairsplus.register_single(v[1], v[2], stairsplus.defs[v[1]][v[2]], modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/stairsplus/defs.lua000066400000000000000000000216541356674613600175370ustar00rootroot00000000000000--[[ More Blocks: registrations Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local box_slope = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.25, 0.5}, {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} } } local box_slope_half = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5}, {-0.5, -0.25, 0, 0.5, -0.125, 0.5}, {-0.5, -0.125, 0.25, 0.5, 0, 0.5}, } } local box_slope_half_raised = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5}, {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5}, {-0.5, 0.25, 0, 0.5, 0.375, 0.5}, {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5}, } } --============================================================== local box_slope_inner = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, {-0.5, -0.5, -0.25, 0.5, 0, 0.5}, {-0.5, -0.5, -0.5, 0.25, 0, 0.5}, {-0.5, 0, -0.5, 0, 0.25, 0.5}, {-0.5, 0, 0, 0.5, 0.25, 0.5}, {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}, {-0.5, 0.25, -0.5, -0.25, 0.5, 0.5}, } } local box_slope_inner_half = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5}, {-0.5, -0.375, -0.5, 0.25, -0.25, 0.5}, {-0.5, -0.25, -0.5, 0, -0.125, 0.5}, {-0.5, -0.25, 0, 0.5, -0.125, 0.5}, {-0.5, -0.125, 0.25, 0.5, 0, 0.5}, {-0.5, -0.125, -0.5, -0.25, 0, 0.5}, } } local box_slope_inner_half_raised = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5}, {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5}, {-0.5, 0.125, -0.5, 0.25, 0.25, 0.5}, {-0.5, 0.25, -0.5, 0, 0.375, 0.5}, {-0.5, 0.25, 0, 0.5, 0.375, 0.5}, {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5}, {-0.5, 0.375, -0.5, -0.25, 0.5, 0.5}, } } --============================================================== local box_slope_outer = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, {-0.5, -0.25, -0.25, 0.25, 0, 0.5}, {-0.5, 0, 0, 0, 0.25, 0.5}, {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5} } } local box_slope_outer_half = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, {-0.5, -0.375, -0.25, 0.25, -0.25, 0.5}, {-0.5, -0.25, 0, 0, -0.125, 0.5}, {-0.5, -0.125, 0.25, -0.25, 0, 0.5} } } local box_slope_outer_half_raised = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5}, {-0.5, 0.125, -0.25, 0.25, 0.25, 0.5}, {-0.5, 0.25, 0, 0, 0.375, 0.5}, {-0.5, 0.375, 0.25, -0.25, 0.5, 0.5} } } stairsplus.defs = { ["micro"] = { [""] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, }, }, ["_1"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, -0.4375, 0.5}, }, }, ["_2"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, -0.375, 0.5}, }, }, ["_4"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, -0.25, 0.5}, }, }, ["_12"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5}, }, }, ["_14"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0.375, 0.5}, }, }, ["_15"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5}, }, } }, ["panel"] = { [""] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, }, }, ["_1"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, -0.4375, 0.5}, }, }, ["_2"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, -0.375, 0.5}, }, }, ["_4"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, -0.25, 0.5}, }, }, ["_12"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5}, }, }, ["_14"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0.375, 0.5}, }, }, ["_15"] = { node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5}, }, } }, ["slab"] = { [""] = 8, ["_quarter"] = 4, ["_three_quarter"] = 12, ["_1"] = 1, ["_2"] = 2, ["_14"] = 14, ["_15"] = 15, ["_two_sides"] = { { -0.5, -0.5, -0.5, 0.5, -7/16, 7/16 }, { -0.5, -0.5, 7/16, 0.5, 0.5, 0.5 } }, ["_three_sides"] = { { -7/16, -0.5, -0.5, 0.5, -7/16, 7/16 }, { -7/16, -0.5, 7/16, 0.5, 0.5, 0.5 }, { -0.5, -0.5, -0.5, -7/16, 0.5, 0.5 } }, ["_three_sides_u"] = { { -0.5, -0.5, -0.5, 0.5, 0.5, -7/16 }, { -0.5, -0.5, -7/16, 0.5, -7/16, 7/16 }, { -0.5, -0.5, 7/16, 0.5, 0.5, 0.5 } } }, ["slope"] = { [""] = { mesh = "moreblocks_slope.obj", collision_box = box_slope, selection_box = box_slope, }, ["_half"] = { mesh = "moreblocks_slope_half.obj", collision_box = box_slope_half, selection_box = box_slope_half, }, ["_half_raised"] = { mesh = "moreblocks_slope_half_raised.obj", collision_box = box_slope_half_raised, selection_box = box_slope_half_raised, }, --============================================================== ["_inner"] = { mesh = "moreblocks_slope_inner.obj", collision_box = box_slope_inner, selection_box = box_slope_inner, }, ["_inner_half"] = { mesh = "moreblocks_slope_inner_half.obj", collision_box = box_slope_inner_half, selection_box = box_slope_inner_half, }, ["_inner_half_raised"] = { mesh = "moreblocks_slope_inner_half_raised.obj", collision_box = box_slope_inner_half_raised, selection_box = box_slope_inner_half_raised, }, --============================================================== ["_inner_cut"] = { mesh = "moreblocks_slope_inner_cut.obj", collision_box = box_slope_inner, selection_box = box_slope_inner, }, ["_inner_cut_half"] = { mesh = "moreblocks_slope_inner_cut_half.obj", collision_box = box_slope_inner_half, selection_box = box_slope_inner_half, }, ["_inner_cut_half_raised"] = { mesh = "moreblocks_slope_inner_cut_half_raised.obj", collision_box = box_slope_inner_half_raised, selection_box = box_slope_inner_half_raised, }, --============================================================== ["_outer"] = { mesh = "moreblocks_slope_outer.obj", collision_box = box_slope_outer, selection_box = box_slope_outer, }, ["_outer_half"] = { mesh = "moreblocks_slope_outer_half.obj", collision_box = box_slope_outer_half, selection_box = box_slope_outer_half, }, ["_outer_half_raised"] = { mesh = "moreblocks_slope_outer_half_raised.obj", collision_box = box_slope_outer_half_raised, selection_box = box_slope_outer_half_raised, }, --============================================================== ["_outer_cut"] = { mesh = "moreblocks_slope_outer_cut.obj", collision_box = box_slope_outer, selection_box = box_slope_outer, }, ["_outer_cut_half"] = { mesh = "moreblocks_slope_outer_cut_half.obj", collision_box = box_slope_outer_half, selection_box = box_slope_outer_half, }, ["_outer_cut_half_raised"] = { mesh = "moreblocks_slope_outer_cut_half_raised.obj", collision_box = box_slope_outer_half_raised, selection_box = box_slope_outer_half_raised, }, ["_cut"] = { mesh = "moreblocks_slope_cut.obj", collision_box = box_slope_outer, selection_box = box_slope_outer, }, }, ["stair"] = { [""] = { 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}, }, }, }, ["_half"] = { node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0, 0, 0.5}, {-0.5, 0, 0, 0, 0.5, 0.5}, }, }, }, ["_right_half"] = { node_box = { type = "fixed", fixed = { {0, -0.5, -0.5, 0.5, 0, 0.5}, {0, 0, 0, 0.5, 0.5, 0.5}, }, }, }, ["_inner"] = { 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}, }, }, }, ["_outer"] = { 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}, }, }, }, ["_alt"] = { 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}, }, }, }, ["_alt_1"] = { node_box = { type = "fixed", fixed = { {-0.5, -0.0625, -0.5, 0.5, 0, 0}, {-0.5, 0.4375, 0, 0.5, 0.5, 0.5}, }, }, }, ["_alt_2"] = { node_box = { type = "fixed", fixed = { {-0.5, -0.125, -0.5, 0.5, 0, 0}, {-0.5, 0.375, 0, 0.5, 0.5, 0.5}, }, }, }, ["_alt_4"] = { node_box = { type = "fixed", fixed = { {-0.5, -0.25, -0.5, 0.5, 0, 0}, {-0.5, 0.25, 0, 0.5, 0.5, 0.5}, }, }, }, }, } for type,a in pairs(stairsplus.defs) do for name,b in pairs(stairsplus.defs[type]) do table.insert(stairsplus.shapes_list, { type .. "_", name }) end end moreblocks-2.0.0/stairsplus/init.lua000066400000000000000000000061671356674613600175630ustar00rootroot00000000000000--[[ More Blocks: Stairs+ Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Nodes will be called :{stair,slab,panel,micro,slope}_ local modpath = minetest.get_modpath("moreblocks").. "/stairsplus" stairsplus = {} stairsplus.expect_infinite_stacks = false stairsplus.shapes_list = {} if not minetest.get_modpath("unified_inventory") and minetest.settings:get_bool("creative_mode") then stairsplus.expect_infinite_stacks = true end function stairsplus:prepare_groups(groups) local result = {} if groups then for k, v in pairs(groups) do if k ~= "wood" and k ~= "stone" then result[k] = v end end end if not moreblocks.config.stairsplus_in_creative_inventory then result.not_in_creative_inventory = 1 end return result end function stairsplus:register_all(modname, subname, recipeitem, fields) self:register_stair(modname, subname, recipeitem, fields) self:register_slab(modname, subname, recipeitem, fields) self:register_slope(modname, subname, recipeitem, fields) self:register_panel(modname, subname, recipeitem, fields) self:register_micro(modname, subname, recipeitem, fields) -- self:register_6dfacedir_conversion(modname, subname) -- Not needed as of Q3 2013, uncomment to fix old maps. end function stairsplus:register_alias_all(modname_old, subname_old, modname_new, subname_new) self:register_stair_alias(modname_old, subname_old, modname_new, subname_new) self:register_slab_alias(modname_old, subname_old, modname_new, subname_new) self:register_slope_alias(modname_old, subname_old, modname_new, subname_new) self:register_panel_alias(modname_old, subname_old, modname_new, subname_new) self:register_micro_alias(modname_old, subname_old, modname_new, subname_new) end function stairsplus:register_alias_force_all(modname_old, subname_old, modname_new, subname_new) self:register_stair_alias_force(modname_old, subname_old, modname_new, subname_new) self:register_slab_alias_force(modname_old, subname_old, modname_new, subname_new) self:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new) self:register_panel_alias_force(modname_old, subname_old, modname_new, subname_new) self:register_micro_alias_force(modname_old, subname_old, modname_new, subname_new) end -- luacheck: no unused local function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_all(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light }) end -- dofile(modpath.. "/aliases.lua") -- Not needed as of Q2 2013, uncomment to fix old maps. -- dofile(modpath.. "/conversion.lua") -- Not needed as of Q2 2013, uncomment to fix old maps. dofile(modpath .. "/defs.lua") dofile(modpath .. "/recipes.lua") dofile(modpath .. "/common.lua") dofile(modpath .. "/stairs.lua") dofile(modpath .. "/slabs.lua") dofile(modpath .. "/slopes.lua") dofile(modpath .. "/panels.lua") dofile(modpath .. "/microblocks.lua") dofile(modpath .. "/custom.lua") dofile(modpath .. "/registrations.lua") moreblocks-2.0.0/stairsplus/microblocks.lua000066400000000000000000000030241356674613600211140ustar00rootroot00000000000000--[[ More Blocks: microblock definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Node will be called :micro_ -- luacheck: no unused local function register_micro(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_micro(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_micro_alias(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["micro"]) for alternate, def in pairs(defs) do minetest.register_alias(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate) end end function stairsplus:register_micro_alias_force(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["micro"]) for alternate, def in pairs(defs) do minetest.register_alias_force(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate) end end function stairsplus:register_micro(modname, subname, recipeitem, fields) local defs = table.copy(stairsplus.defs["micro"]) for alternate, def in pairs(defs) do stairsplus.register_single("micro", alternate, def, modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/stairsplus/panels.lua000066400000000000000000000030171356674613600200710ustar00rootroot00000000000000--[[ More Blocks: panel definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Node will be called :panel_ -- luacheck: no unused local function register_panel(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_panel(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_panel_alias(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["panel"]) for alternate, def in pairs(defs) do minetest.register_alias(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate) end end function stairsplus:register_panel_alias_force(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["panel"]) for alternate, def in pairs(defs) do minetest.register_alias_force(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate) end end function stairsplus:register_panel(modname, subname, recipeitem, fields) local defs = table.copy(stairsplus.defs["panel"]) for alternate, def in pairs(defs) do stairsplus.register_single("panel", alternate, def, modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/stairsplus/recipes.lua000066400000000000000000000411561356674613600202470ustar00rootroot00000000000000--[[ More Blocks: Stairs+ Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] stairsplus.register_recipes = function(category, alternate, modname, subname, recipeitem) if category == "micro" and alternate == "" then minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 7", recipe = {modname .. ":stair_" .. subname .. "_inner"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 6", recipe = {modname .. ":stair_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 5", recipe = {modname .. ":stair_" .. subname .. "_outer"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 4", recipe = {modname .. ":slab_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 4", recipe = {modname .. ":stair_" .. subname .. "_alt"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 3", recipe = {modname .. ":stair_" .. subname .. "_right_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 2", recipe = {modname .. ":panel_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) minetest.register_alias(modname .. ":micro_" .. subname .. "_bottom", modname .. ":micro_" .. subname) elseif category == "panel" and alternate == "" then minetest.register_craft({ output = modname .. ":panel_" .. subname .. " 12", recipe = { {recipeitem, ""}, {recipeitem, recipeitem}, }, }) minetest.register_craft({ output = modname .. ":panel_" .. subname .. " 12", recipe = { {"", recipeitem}, {recipeitem, recipeitem}, }, }) minetest.register_craft({ type = "shapeless", output = modname .. ":panel_" .. subname, recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}, }) minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname) elseif category == "slab" then if alternate == "" then minetest.register_craft({ output = modname .. ":slab_" .. subname .. " 6", recipe = {{recipeitem, recipeitem, recipeitem}}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) -- uncomment this rule when conflict is no longer likely to happen -- https://github.com/minetest/minetest/issues/2881 -- minetest.register_craft({ -- type = "shapeless", -- output = modname .. ":slab_" .. subname, -- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}, -- }) -- then remove these two minetest.register_craft({ output = modname .. ":slab_" .. subname, recipe = {{modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}}, }) minetest.register_craft({ output = modname .. ":slab_" .. subname, recipe = { {modname .. ":panel_" .. subname}, {modname .. ":panel_" .. subname}, }, }) ------------------------------ minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. " 3", recipe = {modname .. ":stair_" .. subname, modname .. ":stair_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"}, }) elseif alternate == "_quarter" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_quarter", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_quarter", recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) elseif alternate == "_three_quarter" then minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) elseif alternate == "_2" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_2", recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) elseif alternate == "_14" then minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_14", recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_14", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) elseif alternate == "_15" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_15", recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"}, }) end elseif category == "slope" then if alternate == "" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname}, }) elseif alternate == "_half" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) elseif alternate == "_outer" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"}, }) elseif alternate == "_outer_half" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"}, }) elseif alternate == "_inner_half" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"}, }) elseif alternate == "_outer_cut" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"}, }) elseif alternate == "_outer_cut_half" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"}, }) elseif alternate == "_cut" then minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"}, }) elseif alternate == "_half_raised" then minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_half_raised", recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"}, }) elseif alternate == "_inner_half_raised" then minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_inner_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"}, }) elseif alternate == "_outer_half_raised" then minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_outer_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"}, }) elseif alternate == "_inner_cut_half_raised" then minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_cut_half"}, }) end elseif category == "stair" then if alternate == "" then minetest.register_craft({ output = modname .. ":stair_" .. subname .. " 8", recipe = { {recipeitem, "", ""}, {recipeitem, recipeitem, ""}, {recipeitem, recipeitem, recipeitem}, }, }) minetest.register_craft({ output = modname .. ":stair_" .. subname .. " 8", recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, {recipeitem, recipeitem, recipeitem}, }, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname, recipe = {modname .. ":panel_" .. subname, modname .. ":slab_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname, recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname, recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname, recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}, }) elseif alternate == "_inner" then minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_inner", recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) elseif alternate == "_outer" then minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_outer", recipe = {modname .. ":micro_" .. subname, modname .. ":slab_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_outer", recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) elseif alternate == "_half" then minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_half", recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_half", recipe = {modname .. ":panel_" .. subname, modname .. ":micro_" .. subname}, }) elseif alternate == "_right_half" then minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_right_half", recipe = {modname .. ":stair_" .. subname .. "_half"}, }) elseif alternate == "_alt" then minetest.register_craft({ -- See mirrored variation of the recipe below. output = modname .. ":stair_" .. subname .. "_alt", recipe = { {modname .. ":panel_" .. subname, ""}, {"" , modname .. ":panel_" .. subname}, }, }) minetest.register_craft({ -- Mirrored variation of the recipe above. output = modname .. ":stair_" .. subname .. "_alt", recipe = { {"" , modname .. ":panel_" .. subname}, {modname .. ":panel_" .. subname, ""}, }, }) end end end moreblocks-2.0.0/stairsplus/registrations.lua000066400000000000000000000120211356674613600214770ustar00rootroot00000000000000--[[ More Blocks: registrations Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- default registrations local default_nodes = { -- Default stairs/slabs/panels/microblocks: "stone", "stone_block", "cobble", "mossycobble", "brick", "sandstone", "steelblock", "goldblock", "copperblock", "bronzeblock", "diamondblock", "tinblock", "desert_stone", "desert_stone_block", "desert_cobble", "meselamp", "glass", "tree", "wood", "jungletree", "junglewood", "pine_tree", "pine_wood", "acacia_tree", "acacia_wood", "aspen_tree", "aspen_wood", "obsidian", "obsidian_block", "obsidianbrick", "obsidian_glass", "stonebrick", "desert_stonebrick", "sandstonebrick", "silver_sandstone", "silver_sandstone_brick", "silver_sandstone_block", "desert_sandstone", "desert_sandstone_brick", "desert_sandstone_block", "sandstone_block", "coral_skeleton", "ice", } for _, name in pairs(default_nodes) do local mod = "default" local nodename = mod .. ":" .. name local ndef = table.copy(minetest.registered_nodes[nodename]) ndef.sunlight_propagates = true -- Stone and desert_stone drop cobble and desert_cobble respectively. if type(ndef.drop) == "string" then ndef.drop = ndef.drop:gsub(".+:", "") end -- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2. if #ndef.tiles > 1 and ndef.drawtype and ndef.drawtype:find("glass") then ndef.tiles = {ndef.tiles[1]} ndef.paramtype2 = nil end mod = "moreblocks" stairsplus:register_all(mod, name, nodename, ndef) minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name) minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer") minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner") minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name) end -- farming registrations if minetest.get_modpath("farming") then local farming_nodes = {"straw"} for _, name in pairs(farming_nodes) do local mod = "farming" local nodename = mod .. ":" .. name local ndef = table.copy(minetest.registered_nodes[nodename]) ndef.sunlight_propagates = true mod = "moreblocks" stairsplus:register_all(mod, name, nodename, ndef) minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name) minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer") minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner") minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name) end end -- wool registrations if minetest.get_modpath("wool") then local dyes = {"white", "grey", "black", "red", "yellow", "green", "cyan", "blue", "magenta", "orange", "violet", "brown", "pink", "dark_grey", "dark_green"} for _, name in pairs(dyes) do local mod = "wool" local nodename = mod .. ":" .. name local ndef = table.copy(minetest.registered_nodes[nodename]) ndef.sunlight_propagates = true -- Prevent dye+cut wool recipy from creating a full wool block. ndef.groups.wool = nil stairsplus:register_all(mod, name, nodename, ndef) end end -- basic_materials, keeping the original other-mod-oriented names -- for backwards compatibility if minetest.get_modpath("basic_materials") then stairsplus:register_all("technic","concrete","basic_materials:concrete_block",{ description = "Concrete", tiles = {"basic_materials_concrete_block.png",}, groups = {cracky=1, level=2, concrete=1}, sounds = default.node_sound_stone_defaults(), }) minetest.register_alias("prefab:concrete_stair","technic:stair_concrete") minetest.register_alias("prefab:concrete_slab","technic:slab_concrete") stairsplus:register_all("gloopblocks", "cement", "basic_materials:cement_block", { description = "Cement", tiles = {"basic_materials_cement_block.png"}, groups = {cracky=2, not_in_creative_inventory=1}, sounds = default.node_sound_stone_defaults(), sunlight_propagates = true, }) stairsplus:register_all("technic", "brass_block", "basic_materials:brass_block", { description="Brass Block", groups={cracky=1, not_in_creative_inventory=1}, tiles={"basic_materials_brass_block.png"}, }) end -- Alias cuts of split_stone_tile_alt which was renamed checker_stone_tile. stairsplus:register_alias_all("moreblocks", "split_stone_tile_alt", "moreblocks", "checker_stone_tile") -- The following LBM is necessary because the name stair_split_stone_tile_alt -- conflicts with another node and so the alias for that specific node gets -- ignored. minetest.register_lbm({ name = "moreblocks:fix_split_stone_tile_alt_name_collision", nodenames = {"moreblocks:stair_split_stone_tile_alt"}, action = function(pos, node) minetest.set_node(pos, { name = "moreblocks:stair_checker_stone_tile", param2 = minetest.get_node(pos).param2 }) minetest.log('action', "LBM replaced " .. node.name .. " at " .. minetest.pos_to_string(pos)) end, }) moreblocks-2.0.0/stairsplus/slabs.lua000066400000000000000000000030041356674613600177070ustar00rootroot00000000000000--[[ More Blocks: slab definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Node will be called :slab_ -- luacheck: no unused local function register_slab(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_slab(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_slab_alias(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["slab"]) for alternate, def in pairs(defs) do minetest.register_alias(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate) end end function stairsplus:register_slab_alias_force(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["slab"]) for alternate, def in pairs(defs) do minetest.register_alias_force(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate) end end function stairsplus:register_slab(modname, subname, recipeitem, fields) local defs = table.copy(stairsplus.defs["slab"]) for alternate, shape in pairs(defs) do stairsplus.register_single("slab", alternate, shape, modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/stairsplus/slopes.lua000066400000000000000000000030171356674613600201140ustar00rootroot00000000000000--[[ More Blocks: slope definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Node will be called :slope_ -- luacheck: no unused local function register_slope(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_slope(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_slope_alias(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["slope"]) for alternate, def in pairs(defs) do minetest.register_alias(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate) end end function stairsplus:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["slope"]) for alternate, def in pairs(defs) do minetest.register_alias_force(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate) end end function stairsplus:register_slope(modname, subname, recipeitem, fields) local defs = table.copy(stairsplus.defs["slope"]) for alternate, def in pairs(defs) do stairsplus.register_single("slope", alternate, def, modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/stairsplus/stairs.lua000066400000000000000000000030171356674613600201140ustar00rootroot00000000000000--[[ More Blocks: stair definitions Copyright © 2011-2019 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Node will be called :stair_ -- luacheck: no unused local function register_stair(modname, subname, recipeitem, groups, images, description, drop, light) stairsplus:register_stair(modname, subname, recipeitem, { groups = groups, tiles = images, description = description, drop = drop, light_source = light, sounds = default.node_sound_stone_defaults(), }) end function stairsplus:register_stair_alias(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["stair"]) for alternate, def in pairs(defs) do minetest.register_alias(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate) end end function stairsplus:register_stair_alias_force(modname_old, subname_old, modname_new, subname_new) local defs = table.copy(stairsplus.defs["stair"]) for alternate, def in pairs(defs) do minetest.register_alias_force(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate) end end function stairsplus:register_stair(modname, subname, recipeitem, fields) local defs = table.copy(stairsplus.defs["stair"]) for alternate, def in pairs(defs) do stairsplus.register_single("stair", alternate, def, modname, subname, recipeitem, fields) end circular_saw.known_nodes[recipeitem] = {modname, subname} end moreblocks-2.0.0/textures/000077500000000000000000000000001356674613600155555ustar00rootroot00000000000000moreblocks-2.0.0/textures/moreblocks_cactus_brick.png000066400000000000000000000012711356674613600231400ustar00rootroot00000000000000PNG  IHDRh6IDATxbL3fuCEq@E8 'y<-k۶o^k|ڶ}mzjwc2I̙#rLp5m@t_L/: [t/4[)xouM8' `+w iJ.뿧#;>2#MyY?VBf* (.K"D?<_ !cDd 5~2ۯ1&d^HˉهYDa4M&'c)T痋0‚ /YaыAEYTFi?j?k@l@mAnBoBrDuFxHyH{IMPmzEtRNSU/IDATxb,AֶmNF/u克p<=au T>K$vb%?DA ȸ_;l'9Â\yoTlѡI Ǩ΢Ϡ73jK Fo0Rqh}ɘw낤YQ کBaěYuCU@vZdK_zL:Y.!_IENDB`moreblocks-2.0.0/textures/moreblocks_checker_stone_tile.png000066400000000000000000000004531356674613600243360ustar00rootroot00000000000000PNG  IHDR:IDATxbWP@#7 œ Ho8g6yB{<^҉w6?O?L>n|HGl711#yP0A)@ 3˼h*u`2YJG2U$/,)9ih8 o t#W'zin@f`aA|iN5rG=IEӐ3 S1ґPY?OzyIENDB`moreblocks-2.0.0/textures/moreblocks_circle_stone_bricks.png000066400000000000000000000006761356674613600245220ustar00rootroot00000000000000PNG  IHDR(-SPLTE'$#,)(-*)1/.10/210311;76;87<87<98<:9=;:HFEIFEIFFJFFJGFNKJOLKPLKPNMTQPTQQUSRUTSVTSWTSWTTWUTXTTXUT_[Z_\[`\[`]\a]\a]]a^]a^^a_^b_^c`_d`_hdcmihmjinjinkjokjolkollomlpmlqmlqnmzwv{xw~5;IDATxB0 ']^]).7?a9rTnӖ!h,HD IƖQv#A 9拳TIkRosqrJ25/M嫧t_~>y58 N3_&D"ZZ?pB{`3ڌ1=frS R@ecX|ftŽYIENDB`moreblocks-2.0.0/textures/moreblocks_circular_saw_bottom.png000066400000000000000000000010761356674613600245510ustar00rootroot00000000000000PNG  IHDR(-SPLTE  !!!###'''(((***---000444555:::<<'K>*K>+K?,M@,MA-OA)OA-QB*QC-QC.SD.SE/TE/TE0XG-XH1YH.ZJ2[[[\J/\\\_N5```aN1aO5aQ6bO1bP6bQ6bbbfffiU9iW:jV9jX:kV5kW:lW6lW9lX:lY;lllr\=ssswa?xb@xcAya:yc@zcAzzz}}}jEc IDATxAAб]B\K a )VrH^=台hԫGyӸ >?BXP1׉2yzJȒZD81,xKVrx=7tA DZEU5d~,..O *d:{ Qc`I*C@/enDJ,q!$e܎t0|ohIENDB`moreblocks-2.0.0/textures/moreblocks_circular_saw_side.png000066400000000000000000000007321356674613600241670ustar00rootroot00000000000000PNG  IHDR(-SPLTE """CCCE:(F:)GGGH=*HHHIIIK>'K>*K>+K?,KKKM@,MA-MMMNNNOA)OA-OOOPPPQB*QQQRRRSD.SE/TE/TE0XG-XH1XI2YH.ZJ2_N5aN1aO5aQ6bO1bP6bQ6iW:jV9jX:kV5kW:lW9lX:lY;xb@xcAyc@zcAjEIDATxbta@,Q du9pw[L5  @qyb[XRr_@ȳh_CгU$?(vEf^O5sou "tCE{Q f︫@0iUi34=0xq,4)/BR`v4Ej:i9$W.)IENDB`moreblocks-2.0.0/textures/moreblocks_circular_saw_top.png000066400000000000000000000006671356674613600240540ustar00rootroot00000000000000PNG  IHDR(-SPLTEE:(F:)H<*H=*K>'K>*K>+K?,M@,MA-OA)OA-OB.QB*QC-QC.SD.SE/TE/TE0XG-XH1XI2YH.ZJ2\J/_N5`N0aN1aO5aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lW9lX:lY;r\=wa?wcAxb@xcAya:yc@zcAjEو 6IDATx q0EJ2aN鿗tfh77>!9_a#1y#54ZHzNtvJM$F13IENDB`moreblocks-2.0.0/textures/moreblocks_coal_glass_stairsplus.png000066400000000000000000000002431356674613600251020ustar00rootroot00000000000000PNG  IHDR(-SPLTE~tRNS@f?IDATxl͡@ WFaFƜҗ Qʆ$\;CH!IENDB`moreblocks-2.0.0/textures/moreblocks_coal_stone.png000066400000000000000000000003451356674613600226330ustar00rootroot00000000000000PNG  IHDR:IDAT%1jA3-3b?'\q mbU@۶%%i9\mzI*s9-Uyj-9,9 ":$RꒉGsL.#fUϪ̴}o6Wݒo))n.6NqIENDB`moreblocks-2.0.0/textures/moreblocks_coal_stone_bricks.png000066400000000000000000000007411356674613600241700ustar00rootroot00000000000000PNG  IHDR(-SPLTE+('.-+/--1--1.-1..421432643743744>;9><;?<;?==B?>MIHMKIMLKOLKOMLTRQURQUSRVTRVTSWTSWTTWUTXUT_[Z_\[`\[`]\a]\a]]a^]b_^d`_fdcfedgedhdcheehfemihmjinjinkjokjolkplkpmlqmlrnmsonsoospotpozwv{wv{xw~}~~~~2@IDATx bQFwc۶*_mcguJXꍸJ/]M&T쾥HKR+^<4vPWfES]!gW3o@FxՀBfe>$5եuZ ʼn8Y* *A3Je:K}0+G8t@`x*D[n(]IENDB`moreblocks-2.0.0/textures/moreblocks_cobble_compressed.png000066400000000000000000000005441356674613600241600ustar00rootroot00000000000000PNG  IHDR(-SfPLTEC?=FC?FCAHDAHDBHECIDCIEBIECKHDKHELJHPNLQNLRPNSPNTQOURPYUS[XU]ZX_\Y_\Zc_]eb^eb_fc`hfdkgernkrnl}{[!IDATB!@S(SϺi{K6Cf\GJ {g>\T[|($. ̉!A=S/nX&Ї.E}w3K|F .eޥ ZRjQLOoT~^#ί~93L]msr!CƲ}WBG#IENDB`moreblocks-2.0.0/textures/moreblocks_copperpatina.png000066400000000000000000000004021356674613600231640ustar00rootroot00000000000000PNG  IHDR(-S0PLTEYmSfWzfnp~VjcoWlWy[o~}xç~ơġUIDATxǁ0 ;B\$c3N=:@Ӣ@&#4HӡhSH' M%`<0K]P?BU Nn)\ ݷʿg vLW;x>d*c&z^c:* IENDB`moreblocks-2.0.0/textures/moreblocks_dirt_compressed.png000066400000000000000000000004151356674613600236710ustar00rootroot00000000000000PNG  IHDR(-S3PLTEaB*]?&dD,[=$W7gH0T4qQ9mM5kK2Y: F( |\DoP8T7P1L.֟IDAT00R tNd]m#.xUYeWWa%'S#:pwY vVjڝuAg@Zߨb+Ԁ)k (Zn }|XIENDB`moreblocks-2.0.0/textures/moreblocks_empty_shelf.png000066400000000000000000000003171356674613600230230ustar00rootroot00000000000000PNG  IHDR(-S*PLTE;2"R?#sZ40)_H(XC$i;mT/}a6nT+tX-hP**%[l`IDATxeP ΫC1ig+1^2EUO("}0C%bx ZZD]K&xi*/ߎ"B_{rVfYb+IENDB`moreblocks-2.0.0/textures/moreblocks_glass_stairsplus.png000066400000000000000000000002471356674613600241100ustar00rootroot00000000000000PNG  IHDR(-SPLTEoiftRNS@f@IDATxu0m|(҅ k0_*2k=6*fm4vI'C\7IENDB`moreblocks-2.0.0/textures/moreblocks_glow_glass_stairsplus.png000066400000000000000000000002471356674613600251400ustar00rootroot00000000000000PNG  IHDR(-SPLTErt}LӂtRNS@f@IDATxu0m|(҅ k0_*2k=6*fm4vI'C\7IENDB`moreblocks-2.0.0/textures/moreblocks_grey_bricks.png000066400000000000000000000013251356674613600230070ustar00rootroot00000000000000PNG  IHDRh6IDAT(nD?7HA*BI<\H\JڪKhM6ćc=3?z|eGRu8𖋿~Ó'7 j+zdA^YQF80,RI>au!CTqbyLkZ*lYe4=/ɪa F0,MBJJֶI8q>Q}.gqB4X$믾!4i_mWMiUUPVԶ=wݙBȶY]Jj~G4 wmgyxLnww-vlPShR3/O>=>4Qn/ch*JX?/_<<9lnM^_&-C|!lBfYȀ2/,!Ig_bLdBi9 XŶ̊QOIx{1j:̤EE'ǟ!4^':))U &7y[׭eW۷QB^o>9"RA XiTUY1B3I X}Uso>#X@붽bx( [r뺖4jw`$'?xPһaIENDB`moreblocks-2.0.0/textures/moreblocks_iron_checker.png000066400000000000000000000013431356674613600231370ustar00rootroot00000000000000PNG  IHDRaIDATx=SÚ] mm۾mu.HOR,9FFF.TfbQǣ455 beed#AJx e2 F{{;˔#LwFWdH(1\.G|^z=j5=/EQ* ,u333*rX{b2n|"p-a \.*J$,'7o_9x,.v](7n@gg' B2$H|i2n$L柿~I|wxx#y`JyIӱKRRR$`ppzMqF1T(QV#X,ɹVUrFh4wn**5x`0Hl''' TUan߾U4M; e""M #: KQCKRD6M䴵dxJB M9CWWBa4L=~_ dK=vj4Pc9{^z.,x^?OѕJEaVהqT7L7M[IENDB`moreblocks-2.0.0/textures/moreblocks_iron_glass_stairsplus.png000066400000000000000000000002471356674613600251370ustar00rootroot00000000000000PNG  IHDR(-SPLTEtRNS@f@IDATxu0m|(҅ k0_*2k=6*fm4vI'C\7IENDB`moreblocks-2.0.0/textures/moreblocks_iron_stone.png000066400000000000000000000003451356674613600226640ustar00rootroot00000000000000PNG  IHDR:IDATx%1RQD94q?l:Cu$f~ Np_@үo^8$X2*ݦCUmD6}W ǽǘsB~3jBc{PQ]+W`2#2y}êH6}OS^w3Dk8IENDB`moreblocks-2.0.0/textures/moreblocks_iron_stone_bricks.png000066400000000000000000000007431356674613600242230ustar00rootroot00000000000000PNG  IHDR(-SPLTE" # % %! %"!(&%)'&+(',(',((30.310410421621622732743C?>CA?CBADBAFCBNLJOMLupn~{y{y}{~}~}~~~ľƾ (IDATxEBA@_MK|wX#Er$A׏IID/VeOdAaޭ:EДp'0!i~n鋕#`@!bLl%ZTcFlOc<̘-ҿ4Mٗ1_K姳$$e0T%ChK-*kHgƮ8PcEsIENDB`moreblocks-2.0.0/textures/moreblocks_junglestick.png000066400000000000000000000001631356674613600230250ustar00rootroot00000000000000PNG  IHDR(-S PLTE(:)C$|tRNS@fIDATxc 015' ;/4sIENDB`moreblocks-2.0.0/textures/moreblocks_obsidian_glass_stairsplus.png000066400000000000000000000002201356674613600257470ustar00rootroot00000000000000PNG  IHDRb PLTE&156LtRNS@f5IDAT[M1 @ %4 %H`LXJc%P0-TmdE7=IENDB`moreblocks-2.0.0/textures/moreblocks_plankstone.png000066400000000000000000000005171356674613600226640ustar00rootroot00000000000000PNG  IHDR(-SrPLTE7-8,9-:/<0?1A5C6E6G7H8M>!N?!OLKQ?TRQUTSVTSWTTWUT[G)_[Z`K,`\[`]\a^]b_^hdcnkjolkplkpmlqml{wv{xwi7sDRt8IDATN@c %QbL ^QАez<'但7 r,F(Ȍ^E9*ՇogUm,R ]zWf[Nh9;G?KڂS Gj֛sU ؍(0mH|Fu3kIENDB`moreblocks-2.0.0/textures/moreblocks_plankstone_2.png000066400000000000000000000005421356674613600231030ustar00rootroot00000000000000PNG  IHDR(-S{PLTE7-8,9-:/<0?1A5C6E6G7H8M>!N?!OLKQ?USRVTSWTSWTT[G)`K,`]\a]\a]]a^]a^^a_^b_^mjinjinkjokjolkollpmlzwv{xw~i7sDR,PhIDATN@'X@ECQ@-3qD BhD\&_Pmi+f9 l1fȩ=cjy^5%uQ=Rfja 6'@45\h@:\.v0M;J F[pcIENDB`moreblocks-2.0.0/textures/moreblocks_rope.png000066400000000000000000000005401356674613600214470ustar00rootroot00000000000000PNG  IHDR(-SPLTE%L 6+*-3**< A!J6HJ^ EHL* AE n ; J!P!R$6%L 'S '\ (8)`*J*Q ,L ,e,e-<0>3? 4V 4i 5m6L6s=w?V CT C|EwPo Y^:tRNS.?$eIDATxED=[q,;t߻ꬿ® N;a1Mh޷ 41?| UL0Mv ^ӼAHVTy!K˝IENDB`moreblocks-2.0.0/textures/moreblocks_split_stone_tile.png000066400000000000000000000004201356674613600240570ustar00rootroot00000000000000PNG  IHDR:IDATxbL4<1Pj{SM:)P?ąj!K1|E=/O)5 ypY-nhWAZR%16$T*gފҒu~9y; PTRע}?lR{ص\j.VE9U6'tS+aq;  ?}ww[Ϯfw4IENDB`moreblocks-2.0.0/textures/moreblocks_split_stone_tile_top.png000066400000000000000000000004261356674613600247470ustar00rootroot00000000000000PNG  IHDR:IDATx ̷AdA PI#[@)+Ugx BΚA<Jo@edEld<,U/-)- & U*w]k>4+=SYsyK 0hds"cRz^S;׮ٴ*vꔪ˘j 06EOcT8_SWCF"do`oHafA;i1]mX:e.>(l|`̾^/t)IENDB`moreblocks-2.0.0/textures/moreblocks_trap_box.png000066400000000000000000000001301356674613600223130ustar00rootroot00000000000000PNG  IHDRaIDATxc'K>*K>+K?,M@,MA-OA)OA-OB.QB*QC-QC.SD.SE/TE/TE0XG-XH1XI2YH.ZJ2\J/_N5`N0aN1aO5aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lW9lX:lY;r\=wa?wcAxb@xcAya:yc@zcAjE&CtRNS@fIDATxEPgb;_Yݛ9s\Yu3oBPg_Br!뢈!BL__aXI@|iAUU#B] Ban݃!RrbC]^?CQd\sIENDB`moreblocks-2.0.0/textures/moreblocks_wood_tile_center.png000066400000000000000000000004311356674613600240260ustar00rootroot00000000000000PNG  IHDR(-SuPLTE[G)E:(F:)K>'M@,MA-OA)OB.QC-QC.SD.SE/TE/TE0XH1XI2YH.ZJ2\J/_N5`N0aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lX:lY;r\=wa?wcAya:ztRNS@fRIDATxڭȃ1^Ȏee::OR'BmJ BL(~}8 }ߋL~׮1IENDB`moreblocks-2.0.0/textures/moreblocks_wood_tile_full.png000066400000000000000000000006611356674613600235150ustar00rootroot00000000000000PNG  IHDR(-SPLTED8'E:(F:)H<*H=*K>'K>*K>+K?,M@,MA-OA)OA-OB.QB*QC-QC.SD.SE/TE/TE0XG-XH1XI2YH.ZJ2\J/_N5`N0aN1aO5aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lW9lX:lY;r\=wa?wcAxb@xcAya:yc@zcAjE3eIDATxU @147L|AQ26i;{^յ>7rӦT'P9k^nUIdM+"jL_"[%Cnե6]W;{ bEJ4k l!h-k ~~<7 tLx9 Z3;D ޵ 6pz97WcRSIENDB`moreblocks-2.0.0/textures/moreblocks_wood_tile_offset.png000066400000000000000000000004321356674613600240350ustar00rootroot00000000000000PNG  IHDR(-SuPLTE[G)E:(F:)K>'M@,MA-OA)OB.QC-QC.SD.SE/TE/TE0XH1XI2YH.ZJ2\J/_N5`N0aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lX:lY;r\=wa?wcAya:ztRNS@fSIDATxDȃD1og9