pax_global_header00006660000000000000000000000064131652257460014525gustar00rootroot0000000000000052 comment=16ae14f458321ccb0e93eed34bc7ade941b31026 moreblocks-1.1.0/000077500000000000000000000000001316522574600136645ustar00rootroot00000000000000moreblocks-1.1.0/.luacheckrc000066400000000000000000000003311316522574600157660ustar00rootroot00000000000000unused_args = false allow_defined_top = true read_globals = { "DIR_DELIM", "minetest", "core", "dump", "vector", "nodeupdate", "VoxelManip", "VoxelArea", "PseudoRandom", "ItemStack", "intllib", "default", } moreblocks-1.1.0/CHANGELOG.md000066400000000000000000000020131316522574600154710ustar00rootroot00000000000000# 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] ## [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. [1.1.0]: https://github.com/minetest-mods/moreblocks/compare/v1.0.0...v1.1.0 [Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v1.0.0...HEAD moreblocks-1.1.0/CONTRIBUTING.md000066400000000000000000000007201316522574600161140ustar00rootroot00000000000000# 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-1.1.0/LICENSE.md000066400000000000000000000015641316522574600152760ustar00rootroot00000000000000# zlib license Copyright (c) 2011-2017 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-1.1.0/README.md000066400000000000000000000050421316522574600151440ustar00rootroot00000000000000# 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: ``` 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** necessary to do, else, it won't work! ### 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 (else, 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: ``` 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 0.4.16. It may or may not work with newer or older versions. Issues arising in older versions than 0.4.16 will generally not be fixed. ## License Copyright © 2011-2017 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-1.1.0/aliases.lua000066400000000000000000000100761316522574600160140ustar00rootroot00000000000000--[[ More Blocks: alias definitions Copyright (c) 2011-2017 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_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:fence_junglewood", "moreblocks:fence_jungle_wood") minetest.register_alias("moreblocks:coalstone", "moreblocks:coal_stone") minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone") minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile") minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full") minetest.register_alias("moreblocks:woodtile_centered", "moreblocks:wood_tile_centered") minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up") minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down") minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left") minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right") minetest.register_alias("moreblocks:coalglass", "moreblocks:coal_glass") minetest.register_alias("moreblocks:ironglass", "moreblocks:iron_glass") minetest.register_alias("moreblocks:glowglass", "moreblocks:glow_glass") minetest.register_alias("moreblocks:superglowglass", "moreblocks:super_glow_glass") minetest.register_alias("moreblocks:trapglass", "moreblocks:trap_glass") minetest.register_alias("moreblocks:trapstone", "moreblocks:trap_stone") minetest.register_alias("moreblocks:cactuschecker", "moreblocks:cactus_checker") minetest.register_alias("moreblocks:coalchecker", "moreblocks:coal_checker") minetest.register_alias("moreblocks:ironchecker", "moreblocks:iron_checker") minetest.register_alias("moreblocks:cactusbrick", "moreblocks:cactus_brick") minetest.register_alias("moreblocks:cleanglass", "moreblocks:clean_glass") minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf") minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick") minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile") minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree") -- 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, }) moreblocks-1.1.0/circular_saw.lua000066400000000000000000000323511316522574600170510ustar00rootroot00000000000000--[[ More Blocks: circular saw Copyright (c) 2011-2017 Hugo Locurcio, Sokomine and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib 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() 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 %s)") :format(meta:get_string("owner") or "")) 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 automaticly. 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 name_parts = circular_saw.known_nodes[node_name] or "" local modname = name_parts[1] or "" local material = name_parts[2] or "" 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 .. "_bottom " .. (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 %s (owned by %s)") :format(material, meta:get_string("owner") or "")) 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 alow 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.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 substracted: if listname == "output" then -- We do know how much each block at each position costs: local cost = circular_saw.cost_in_microblocks[index] * stack:get_count() circular_saw:update_inventory(pos, -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;" ..S("Input\nmaterial").. "]" .. "list[current_name;input;1.5,0;1,1;]" .. "label[0,1;" ..S("Left-over").. "]" .. "list[current_name;micro;1.5,1;1,1;]" .. "label[0,2;" ..S("Recycle\noutput").. "]" .. "list[current_name;recycle;1.5,2;1,1;]" .. "field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" .. "button[1,3.2;1,1;Set;" ..S("Set").. "]" .. "list[current_name;output;2.8,0;8,6;]" .. "list[current_player;main;1.5,6.25;8,4;]") 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 "" meta:set_string("owner", owner) meta:set_string("infotext", S("Circular Saw is empty (owned by %s)") :format(owner)) 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, -- 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-1.1.0/config.lua000066400000000000000000000013741316522574600156410ustar00rootroot00000000000000--[[ More Blocks: configuration handling Copyright (c) 2011-2017 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", false) moreblocks-1.1.0/crafting.lua000066400000000000000000000246671316522574600162030ustar00rootroot00000000000000--[[ More Blocks: crafting recipes Copyright (c) 2011-2017 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 = {{"default:sapling"},} }) minetest.register_craft({ output = "default:stick", recipe = {{"default:junglesapling"},} }) 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:dirt_with_grass", type = "shapeless", recipe = {"default:mese", "default:dirt"}, }) minetest.register_craft({ output = "default:mossycobble", type = "shapeless", recipe = {"default:junglegrass", "default:cobble"}, }) minetest.register_craft({ output = "default:mossycobble", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:cobble"}, }) minetest.register_craft({ output = "moreblocks:wood_tile 9", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, } }) minetest.register_craft({ output = "moreblocks:wood_tile_flipped", recipe = {{"moreblocks:wood_tile"},} }) minetest.register_craft({ output = "moreblocks:wood_tile_center 9", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "moreblocks:wood_tile", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, } }) 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_up", recipe = { {"default:stick"}, {"moreblocks:wood_tile_center"}, } }) minetest.register_craft({ output = "moreblocks:wood_tile_down", recipe = { {"moreblocks:wood_tile_center"}, {"default:stick"}, } }) minetest.register_craft({ output = "moreblocks:wood_tile_left", recipe = { {"default:stick", "moreblocks:wood_tile_center"}, } }) minetest.register_craft({ output = "moreblocks:wood_tile_right", recipe = { {"moreblocks:wood_tile_center", "default:stick"}, } }) minetest.register_craft({ output = "moreblocks:circle_stone_bricks 8", recipe = { {"default:stone", "default:stone", "default:stone"}, {"default:stone", "", "default:stone"}, {"default:stone", "default:stone", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_tree 8", recipe = { {"default:tree", "default:tree", "default:tree"}, {"default:tree", "", "default:tree"}, {"default:tree", "default:tree", "default:tree"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_jungle_tree 8", recipe = { {"default:jungletree", "default:jungletree", "default:jungletree"}, {"default:jungletree", "", "default:jungletree"}, {"default:jungletree", "default:jungletree", "default:jungletree"}, } }) minetest.register_craft({ output = "moreblocks:sweeper 4", recipe = { {"default:junglegrass"}, {"default:stick"}, } }) minetest.register_craft({ output = "moreblocks:stone_tile 4", recipe = { {"default:cobble", "default:cobble"}, {"default:cobble", "default:cobble"}, } }) minetest.register_craft({ output = "moreblocks:split_stone_tile", recipe = { {"moreblocks:stone_tile"}, } }) minetest.register_craft({ output = "moreblocks:split_stone_tile_alt", recipe = { {"moreblocks:split_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_bookshelf", type = "shapeless", recipe = {"moreblocks:sweeper", "default:bookshelf"}, replacements = {{"default:bookshelf", "default:book 3"}}, -- When obtaining an empty bookshelf, return the books used in it as well }) minetest.register_craft({ 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 = { {"default:stone", "default:wood"}, {"default:wood", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:plankstone 4", recipe = { {"default:wood", "default:stone"}, {"default:stone", "default:wood"}, } }) minetest.register_craft({ output = "moreblocks:coal_checker 4", recipe = { {"default:stone", "default:coal_lump"}, {"default:coal_lump", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:coal_checker 4", recipe = { {"default:coal_lump", "default:stone"}, {"default:stone", "default:coal_lump"}, } }) minetest.register_craft({ output = "moreblocks:iron_checker 4", recipe = { {"default:steel_ingot", "default:stone"}, {"default:stone", "default:steel_ingot"}, } }) minetest.register_craft({ output = "moreblocks:iron_checker 4", recipe = { {"default:stone", "default:steel_ingot"}, {"default:steel_ingot", "default:stone"}, } }) minetest.register_craft({ output = "default:chest_locked", 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_glass", type = "shapeless", recipe = {"default:mese_crystal_fragment", "default:glass"}, }) 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: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:gravel", }) minetest.register_craft({ type = "shapeless", output = "moreblocks:copperpatina", recipe = {"bucket:bucket_water", "default:copperblock"}, replacements = { {"bucket:bucket_water", "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-1.1.0/depends.txt000066400000000000000000000000441316522574600160450ustar00rootroot00000000000000default intllib? farming? wool? moreblocks-1.1.0/description.txt000066400000000000000000000000571316522574600167520ustar00rootroot00000000000000Adds various miscellaneous blocks to the game. moreblocks-1.1.0/init.lua000066400000000000000000000017421316522574600153360ustar00rootroot00000000000000--[[ ===================================================================== ** More Blocks ** By Calinou, with the help of ShadowNinja and VanessaE. Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. ===================================================================== --]] moreblocks = {} local S if minetest.global_exists("intllib") then if intllib.make_gettext_pair then S = intllib.make_gettext_pair() else S = intllib.Getter() end else S = function(s) return s end end moreblocks.intllib = S local modpath = minetest.get_modpath("moreblocks") 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") if minetest.settings:get_bool("log_mods") then minetest.log("action", S("[moreblocks] loaded.")) end moreblocks-1.1.0/locale/000077500000000000000000000000001316522574600151235ustar00rootroot00000000000000moreblocks-1.1.0/locale/de.txt000066400000000000000000000034451316522574600162620ustar00rootroot00000000000000# Translation by Xanthin ###init.lua### [moreblocks] loaded. = [moreblocks] geladen. ###nodes.lua### Jungle Wood Fence = Tropenholzzaun Empty Bookshelf = Leeres Buecherregal Clean Glass = Klares Glas Plankstone = Brettstein Wooden Tile = Holzfliese Full Wooden Tile = Vollholzfliese Centered Wooden Tile = Holzfliese mittig Up Wooden Tile = Holzfliese oben Down Wooden Tile = Holzfliese unten Left Wooden Tile = Holzfliese links Right Wooden Tile = Holzfliese rechts Circle Stone Bricks = Kreissteinziegel Stone Tile = Steinfliese Split Stone Tile = Geteilte Steinfliese Glow Glass = Leuchtglas Super Glow Glass = Superleuchtglas Coal Glass = Kohleglas Iron Glass = Eisenglas Coal Checker = Karierte Kohle Iron Checker = Kariertes Eisen Trap Stone = Steinfalle Trap Glass = Glasfalle Trap Glow Glass = Leuchtglasfalle Trap Super Glow Glass = Superleuchtglasfalle Coal Stone = Kohlestein Iron Stone = Eisenstein Coal Stone Bricks = Kohlesteinziegel Iron Stone Bricks = Eisensteinziegel Cactus Checker = Karierter Kaktus Cactus Brick = Kaktusziegel Sweeper = Besen Jungle Stick = Tropenholzstock Rope = Seil All-faces Tree = Baumscheibenstamm ###circular_saw.lua### Circular Saw = Kreissaege Circular saw, empty (owned by %s) = Kreissaege, leer (gehoert %s) Circular saw, working with %s (owned by %s) = Kreissaege, arbeitet mit %s (gehoert %s) Circular saw, empty = Kreissaege, leer Circular saw is empty (owned by %s) = Kreissaege ist leer (gehoert %s) Input\nmaterial = Ausgangs-\nmaterial Left-over = Rest Max = Anzahl Set = Ok Recycle\noutput = Wiederver-\nwerten ###./stairsplus/*### %s Stairs = %streppe %s Slab = %sstufe %s Panel = %spaneel %s Microblock = %smikroblock %s Pane = %sscheibe %s Fence = %szaun ###ownership.lua### someone = jemand Sorry, %s owns that spot. = Tut mir leid, %s gehoert diese Stelle. moreblocks-1.1.0/locale/es.txt000066400000000000000000000027701316522574600163010ustar00rootroot00000000000000# Translation by kaeza [moreblocks] loaded. = [moreblocks] cargado. Jungle Wooden Planks = Tablones de madera de jungla Empty Bookshelf = Estante para libros vacío Clean Glass = Cristal Limpio Plankstone = Tablones de piedra Wooden Tile = Parquet Full Wooden Tile = Parquet Completo Centered Wooden Tile = Parquet Centrado Up Wooden Tile = Parquet Superior Down Wooden Tile = Parquet Inferior Left Wooden Tile = Parquet Izquierdo Right Wooden Tile = Parquet Derecho Circle Stone Bricks = Bloques de Piedra Circulares Stone Tile = Baldosa de Piedra Split Stone Tile = Baldosas de Piedra Partida Glow Glass = Cristal Brillante Super Glow Glass = Cristal Súper Brillante Coal Glass = Cristal con Carbón Iron Glass = Cristal con Hierro Coal Checker = Cuadros de Carbón Iron Checker = Cuadros de Hierro Trap Stone = Piedra Trampa Trap Glass = Cristal Trampa Coal Stone = Carbón y Piedra Iron Stone = Hierro y Piedra Cactus Checker = Cuadros de Cactus Cactus Brick = Ladrillos de Cactus Sweeper = Limpiador Jungle Stick = Varita de Madera de Jungla Horizontal Tree = Tronco de árbol horizontal Horizontal Jungle Tree = Tronco de árbol de la jungla horizontal Rope = Soga All-faces Tree = Tronco de Árbol %s Stairs = Escalera de %s %s Slab = Losa de %s %s Panel = Panel de %s %s Microblock = Microbloque de %s Wooden = Madera Papyrus = Papiro Dry Shrub = Arbusto Desértico Sapling = Brote de Árbol Wooden Planks = Tablones de Madera Ladder = Escalera de Mano Glass = Cristal %s Pane = Panel de %s %s Fence = Valla de %s moreblocks-1.1.0/locale/fr.txt000066400000000000000000000043061316522574600162760ustar00rootroot00000000000000# Translation by Calinou ###init.lua### [moreblocks] loaded. = [moreblocks] a t charg. Jungle Wooden Planks = Planches de bois de jungle Empty Bookshelf = tagre vide Clean Glass = Verre propre Plankstone = Pierre-bois Wooden Tile = Dalle en bois Full Wooden Tile = Dalle en bois complte Centered Wooden Tile = Dalle en bois centre Up Wooden Tile = Dalle en bois vers le haut Down Wooden Tile = Dalle en bois vers le bas Left Wooden Tile = Dalle en bois vers la gauche Right Wooden Tile = Dalle en bois vers la droite Circle Stone Bricks = Briques en pierre circulaires Stone Tile = Dalle en pierre Split Stone Tile = Dalle en pierre dcoupe Glow Glass = Verre brillant Super Glow Glass = Verre trs brillant Coal Glass = Verre de charbon Iron Glass = Verre de fer Coal Checker = Damier en charbon Iron Checker = Damier en fer Trap Stone = Pierre traversable Trap Glass = Verre traversable Trap Glow Glass = Verre brillant traversable Trap Super Glow Glass = Verre trs brillant traversable Coal Stone = Pierre de charbon Iron Stone = Pierre de fer Coal Stone Bricks = Briques en pierre de charbon Iron Stone Bricks = Briques en pierre de fer Cactus Checker = Damier en cactus Cactus Brick = Briques de cactus Sweeper = Balai Jungle Stick = Bton en bois de jungle Horizontal Tree = Tronc d'arbre horizontal Horizontal Jungle Tree = Tronc d'arbre de jungle horizontal Rope = Corde All-faces Tree = Tronc d'arbre ###redefinition.lua### Wooden = bois Papyrus = Papyrus Dry Shrub = Buisson mort Sapling = Pousse d'arbre Wooden Planks = Planches de bois Ladder = chelle Glass = Verre ###circular_saw.lua### Circular Saw = Scie circulaire Circular saw, empty (owned by %s) = Scie circulaire, vide (proprit de %s) Circular saw, working with %s (owned by %s) = Scie circulaire, manipule %s (proprit de %s) Circular saw, empty = Scie circulaire, vide Circular saw is empty (owned by %s) = Scie circulaire est vide (proprit de %s) Input material = Entre du matriel Rest/microblocks = Reste/microbloc Max: = Max: Set = Fixer Recycle output = Recyclage ###./stairsplus/*### %s Stairs = Escaliers en %s %s Slab = Demi-dalle en %s %s Panel = Barre en %s %s Microblock = Microbloc en %s %s Pane = Panneau en %s %s Fence = Barrire en %smoreblocks-1.1.0/locale/it.txt000066400000000000000000000042341316522574600163030ustar00rootroot00000000000000# # Italian translation # Translator: Emon # ###init.lua### [moreblocks] loaded. = [moreblocks] caricato. ###nodes.lua### Jungle Wood Fence = Recinzione in legno della giungla Empty Bookshelf = Libreria vuota Clean Glass = Vetro pulito Plankstone = Pietra e legno Wooden Tile = Mattonella in legno Full Wooden Tile = Mattonella in legno pieno Centered Wooden Tile = Mattonella in legno centrata Up Wooden Tile = Mattonella in legno verso l'alto Down Wooden Tile = Mattonella in legno verso il basso Left Wooden Tile = Mattonella in legno verso sinistra Right Wooden Tile = Mattonella in legno verso destra Circle Stone Bricks = Mattoni concentrici in pietra Stone Tile = Mattonella in pietra Split Stone Tile = Mattonella in pietra divisa Glow Glass = Vetro luminoso Super Glow Glass = Super vetro luminoso Coal Glass = Vetro e carbone Iron Glass = Vetro e ferro Coal Checker = Scacchiera in carbone Iron Checker = Scacchiera in ferro Trap Stone = Pietra trappola Trap Glass = Vetro trappola Trap Glow Glass = Vetro luminoso trappola Trap Super Glow Glass = Super vetro luminoso trappola Coal Stone = Pietra in carbone Iron Stone = Pietra in ferro Coal Stone Bricks = Mattoni di pietra in carbone Iron Stone Bricks = Mattoni di pietra in ferro Cactus Checker = Scacchiera in cactus Cactus Brick = Mattoni di cactus Sweeper = Spazzola Jungle Stick = Bastone in legno della giungla Rope = Corda All-faces Tree = Albero su ogni lato ###circular_saw.lua### Circular Saw = Sega circolare Circular saw, empty (owned by %s) = Sega circolare, vuota (di proprietà di %s) Circular saw, working with %s (owned by %s) = Sega circolare, in funzione su %s (di proprietà di %s) Circular saw, empty = Sega circolare, vuota Circular saw is empty (owned by %s) = La sega circolare è vuota (di proprietà di %s) Input\nmaterial = Materiale\niniziale Left-over = Scarto Max = Max. Set = Imp. Recycle\noutput = Ricicla\nfinale ###ownership.lua### someone = qualcuno Sorry, %s owns that spot. = Spiacente, quel punto è di proprietà di %s ###./stairsplus/*### %s Stairs = Scale - %s %s Slab = Lastra - %s %s Panel = Pannello - %s %s Microblock = Microblocco %s %s Pane = Pannello - %s %s Fence = Recinzione - %s moreblocks-1.1.0/locale/template.txt000066400000000000000000000020371316522574600175010ustar00rootroot00000000000000###init.lua### [moreblocks] loaded. = ###nodes.lua### Jungle Wood Fence = Empty Bookshelf = Clean Glass = Plankstone = Wooden Tile = Full Wooden Tile = Centered Wooden Tile = Up Wooden Tile = Down Wooden Tile = Left Wooden Tile = Right Wooden Tile = Circle Stone Bricks = Stone Tile = Split Stone Tile = Glow Glass = Super Glow Glass = Coal Glass = Iron Glass = Coal Checker = Iron Checker = Trap Stone = Trap Glass = Trap Glow Glass = Trap Super Glow Glass = Coal Stone = Iron Stone = Coal Stone Bricks = Iron Stone Bricks = Cactus Checker = Cactus Brick = Sweeper = Jungle Stick = Rope = All-faces Tree = ###circular_saw.lua### Circular Saw = Circular saw, empty (owned by %s) = Circular saw, working with %s (owned by %s) = Circular saw, empty = Circular saw is empty (owned by %s) = Input\nmaterial = Left-over = Max = Set = Recycle\noutput = ###ownership.lua### someone = Sorry, %s owns that spot. = ###./stairsplus/*### %s Stairs = %s Slab = %s Panel = %s Microblock = %s Pane = %s Fence = moreblocks-1.1.0/mod.conf000066400000000000000000000000221316522574600153040ustar00rootroot00000000000000name = moreblocks moreblocks-1.1.0/models/000077500000000000000000000000001316522574600151475ustar00rootroot00000000000000moreblocks-1.1.0/models/moreblocks_slope.obj000066400000000000000000000022371316522574600212110ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_cut.obj000066400000000000000000000026371316522574600220700ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_half.obj000066400000000000000000000022451316522574600222020ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_half_raised.obj000066400000000000000000000030251316522574600235260ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner.obj000066400000000000000000000032371316522574600224050ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner_cut.obj000066400000000000000000000027451316522574600232630ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner_cut_half.obj000066400000000000000000000027531316522574600242540ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner_cut_half_raised.obj000066400000000000000000000031251316522574600255750ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner_half.obj000066400000000000000000000034001316522574600233670ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_inner_half_raised.obj000066400000000000000000000034561316522574600247310ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer.obj000066400000000000000000000017441316522574600224310ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer_cut.obj000066400000000000000000000014501316522574600232760ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer_cut_half.obj000066400000000000000000000014531316522574600242730ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer_cut_half_raised.obj000066400000000000000000000022371316522574600256230ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer_half.obj000066400000000000000000000017471316522574600234260ustar00rootroot00000000000000g 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-1.1.0/models/moreblocks_slope_outer_half_raised.obj000066400000000000000000000031001316522574600247360ustar00rootroot00000000000000g 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-1.1.0/nodes.lua000066400000000000000000000272041316522574600155040ustar00rootroot00000000000000--[[ More Blocks: node definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib 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 nodes = { ["wood_tile"] = { description = S("Wooden Tile"), groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, 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"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR90", "default_wood.png^moreblocks_wood_tile.png^[transformR180", "default_wood.png^moreblocks_wood_tile.png^[transformR180"}, sounds = sound_wood, no_stairs = true, }, ["wood_tile_center"] = { description = S("Centered Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^moreblocks_wood_tile_center.png"}, sounds = sound_wood, }, ["wood_tile_full"] = { description = S("Full Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = tile_tiles("wood_tile_full"), sounds = sound_wood, }, ["wood_tile_up"] = { description = S("Upwards Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^moreblocks_wood_tile_up.png"}, sounds = sound_wood, no_stairs = true, }, ["wood_tile_down"] = { description = S("Downwards Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_up.png^[transformR180"}, sounds = sound_wood, no_stairs = true, }, ["wood_tile_left"] = { description = S("Leftwards Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_up.png^[transformR270"}, sounds = sound_wood, no_stairs = true, }, ["wood_tile_right"] = { description = S("Rightwards Wooden Tile"), groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_up.png^[transformR90"}, sounds = sound_wood, no_stairs = true, }, ["circle_stone_bricks"] = { description = S("Circle Stone Bricks"), groups = {cracky = 3}, sounds = sound_stone, }, ["grey_bricks"] = { description = S("Stone Bricks"), groups = {cracky = 3}, sounds = sound_stone, }, ["coal_stone_bricks"] = { description = S("Coal Stone Bricks"), groups = {cracky = 3}, sounds = sound_stone, }, ["iron_stone_bricks"] = { description = S("Iron Stone Bricks"), groups = {cracky = 3}, sounds = sound_stone, }, ["stone_tile"] = { description = S("Stone Tile"), groups = {cracky = 3}, sounds = sound_stone, }, ["split_stone_tile"] = { description = S("Split Stone Tile"), tiles = {"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"}, groups = {cracky = 3}, sounds = sound_stone, }, ["split_stone_tile_alt"] = { description = S("Checkered Stone Tile"), groups = {cracky = 3}, sounds = sound_stone, }, ["tar"] = { description = S("Tar"), groups = {cracky = 2, tar_block = 1}, sounds = sound_stone, }, ["cobble_compressed"] = { description = S("Compressed Cobblestone"), groups = {cracky = 1}, sounds = sound_stone, }, ["plankstone"] = { description = S("Plankstone"), groups = {cracky = 3}, tiles = tile_tiles("plankstone"), sounds = sound_stone, }, ["iron_glass"] = { description = S("Iron Glass"), drawtype = "glasslike_framed_optional", --tiles = {"moreblocks_iron_glass.png", "moreblocks_iron_glass_detail.png"}, tiles = {"moreblocks_iron_glass.png"}, paramtype = "light", sunlight_propagates = true, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["coal_glass"] = { description = S("Coal Glass"), drawtype = "glasslike_framed_optional", --tiles = {"moreblocks_coal_glass.png", "moreblocks_coal_glass_detail.png"}, tiles = {"moreblocks_coal_glass.png"}, paramtype = "light", sunlight_propagates = true, groups = {snappy = 2, 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"}, tiles = {"moreblocks_clean_glass.png"}, paramtype = "light", sunlight_propagates = true, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["cactus_brick"] = { description = S("Cactus Brick"), groups = {cracky = 3}, sounds = sound_stone, }, ["cactus_checker"] = { description = S("Cactus Checker"), groups = {cracky = 3}, 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_bookshelf"] = { description = S("Empty Bookshelf"), tiles = {"default_wood.png", "default_wood.png", "moreblocks_empty_bookshelf.png"}, groups = {snappy = 2, choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = sound_wood, furnace_burntime = 15, no_stairs = true, }, ["coal_stone"] = { description = S("Coal Stone"), groups = {cracky = 3}, sounds = sound_stone, }, ["iron_stone"] = { description = S("Iron Stone"), groups = {cracky = 3}, 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 = {cracky = 3}, 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 = {cracky = 3}, sounds = sound_stone, }, ["trap_stone"] = { description = S("Trap Stone"), walkable = false, groups = {cracky = 3}, sounds = sound_stone, no_stairs = true, }, ["trap_glass"] = { description = S("Trap Glass"), drawtype = "glasslike_framed_optional", --tiles = {"moreblocks_trap_glass.png", "default_glass_detail.png"}, tiles = {"moreblocks_trap_glass.png"}, paramtype = "light", sunlight_propagates = true, walkable = false, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, no_stairs = true, }, ["all_faces_tree"] = { description = S("All-faces Tree"), tiles = {"default_tree_top.png"}, groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = sound_wood, furnace_burntime = 30, }, ["all_faces_jungle_tree"] = { description = S("All-faces Jungle Tree"), tiles = {"default_jungletree_top.png"}, groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = sound_wood, furnace_burntime = 30, }, ["glow_glass"] = { description = S("Glow Glass"), drawtype = "glasslike_framed_optional", --tiles = {"moreblocks_glow_glass.png", "moreblocks_glow_glass_detail.png"}, tiles = {"moreblocks_glow_glass.png"}, paramtype = "light", sunlight_propagates = true, light_source = 11, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, sounds = sound_glass, }, ["trap_glow_glass"] = { description = S("Trap Glow Glass"), drawtype = "glasslike_framed_optional", --tiles = {"moreblocks_trap_glass.png", "moreblocks_glow_glass_detail.png"}, tiles = {"moreblocks_trap_glass.png"}, paramtype = "light", sunlight_propagates = true, light_source = 11, walkable = false, groups = {snappy = 2, 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 = {"moreblocks_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"}, tiles = {"moreblocks_super_glow_glass.png"}, paramtype = "light", sunlight_propagates = true, light_source = 14, groups = {snappy = 2, 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 = {"moreblocks_trap_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"}, tiles = {"moreblocks_trap_super_glow_glass.png"}, paramtype = "light", sunlight_propagates = true, light_source = 14, walkable = false, groups = {snappy = 2, 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, 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}, 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) 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", }) minetest.register_craftitem("moreblocks:nothing", { inventory_image = "invisible.png", on_use = function() end, }) moreblocks-1.1.0/ownership.lua000066400000000000000000000024071316522574600164100ustar00rootroot00000000000000--[[ More Blocks: ownership handling Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.gettext 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, %s owns that spot."):format(ownername) ) return true else return false end end moreblocks-1.1.0/redefinitions.lua000066400000000000000000000022171316522574600172330ustar00rootroot00000000000000--[[ More Blocks: redefinitions of default stuff Copyright (c) 2011-2017 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.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-1.1.0/stairsplus/000077500000000000000000000000001316522574600160755ustar00rootroot00000000000000moreblocks-1.1.0/stairsplus/API.md000066400000000000000000000015521316522574600170330ustar00rootroot00000000000000# 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", "defaut: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)` moreblocks-1.1.0/stairsplus/aliases.lua000066400000000000000000000131111316522574600202160ustar00rootroot00000000000000--[[ More Blocks: alias definitions Copyright (c) 2011-2017 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-1.1.0/stairsplus/conversion.lua000066400000000000000000000100531316522574600207640ustar00rootroot00000000000000--[[ More Blocks: conversion Copyright (c) 2011-2017 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-1.1.0/stairsplus/init.lua000066400000000000000000000064651316522574600175560ustar00rootroot00000000000000--[[ More Blocks: Stairs+ Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] -- Nodes will be called :{stair,slab,panel,micro}_ 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.copytable(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do copy[stairsplus.copytable(orig_key)] = stairsplus.copytable(orig_value) end setmetatable(copy, stairsplus.copytable(getmetatable(orig))) else copy = orig end return copy 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 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 .. "/stairs.lua") dofile(modpath .. "/slabs.lua") dofile(modpath .. "/slopes.lua") dofile(modpath .. "/panels.lua") dofile(modpath .. "/microblocks.lua") dofile(modpath .. "/registrations.lua") moreblocks-1.1.0/stairsplus/microblocks.lua000066400000000000000000000104741316522574600211150ustar00rootroot00000000000000--[[ More Blocks: microblock definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib -- Node will be called :micro_ 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 local microblocks_defs = { [""] = { 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}, }, } } for k,v in pairs(microblocks_defs) do table.insert(stairsplus.shapes_list, { "micro_", k }) end function stairsplus:register_micro_alias(modname_old, subname_old, modname_new, subname_new) local defs = stairsplus.copytable(microblocks_defs) 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 = stairsplus.copytable(microblocks_defs) 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 = stairsplus.copytable(microblocks_defs) local desc = S("%s Microblock"):format(fields.description) for alternate, def in pairs(defs) do for k, v in pairs(fields) do def[k] = v end def.drawtype = "nodebox" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node def.groups = stairsplus:prepare_groups(fields.groups) def.description = desc if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":micro_" ..fields.drop..alternate end minetest.register_node(":" ..modname.. ":micro_" ..subname..alternate, def) end minetest.register_alias(modname.. ":micro_" ..subname.. "_bottom", modname.. ":micro_" ..subname) circular_saw.known_nodes[recipeitem] = {modname, subname} -- Some saw-less recipes: minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 7", recipe = {modname .. ":stair_" .. subname .. "_inner"}, }) minetest.register_craft({ output = modname .. ":micro_" .. subname .. " 6", type = "shapeless", recipe = {modname .. ":stair_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 5", recipe = {modname .. ":stair_" .. subname .. "_outer"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 4", recipe = {modname .. ":slab_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 4", recipe = {modname .. ":stair_" .. subname .. "_alt"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 3", recipe = {modname .. ":stair_" .. subname .. "_right_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":micro_" .. subname .. " 2", recipe = {modname .. ":panel_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, 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}, }) end moreblocks-1.1.0/stairsplus/panels.lua000066400000000000000000000070561316522574600200720ustar00rootroot00000000000000--[[ More Blocks: panel definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib -- Node will be called :panel_ 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 local panels_defs = { [""] = { 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}, }, } } for k,v in pairs(panels_defs) do table.insert(stairsplus.shapes_list, { "panel_", k }) end function stairsplus:register_panel_alias(modname_old, subname_old, modname_new, subname_new) local defs = stairsplus.copytable(panels_defs) 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 = stairsplus.copytable(panels_defs) 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 = stairsplus.copytable(panels_defs) local desc = S("%s Panel"):format(fields.description) for alternate, def in pairs(defs) do for k, v in pairs(fields) do def[k] = v end def.drawtype = "nodebox" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node def.description = desc def.groups = stairsplus:prepare_groups(fields.groups) if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":panel_" ..fields.drop..alternate end minetest.register_node(":" ..modname.. ":panel_" ..subname..alternate, def) end minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname) circular_saw.known_nodes[recipeitem] = {modname, subname} -- Some saw-less recipes: 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}, }) end moreblocks-1.1.0/stairsplus/registrations.lua000066400000000000000000000051531316522574600215010ustar00rootroot00000000000000--[[ More Blocks: registrations Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] 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", "farming:straw" } for _, name in pairs(default_nodes) do local nodename = "default:"..name local a,b = string.find(name, ":") if b then nodename = name name = string.sub(name, b+1) end local ndef = minetest.registered_nodes[nodename] if ndef then local drop if type(ndef.drop) == "string" then drop = ndef.drop:sub((b or 8)+1) end local tiles = ndef.tiles if #ndef.tiles > 1 and ndef.drawtype:find("glass") then tiles = { ndef.tiles[1] } end stairsplus:register_all("moreblocks", name, nodename, { description = ndef.description, drop = drop, groups = ndef.groups, sounds = ndef.sounds, tiles = tiles, sunlight_propagates = true, light_source = ndef.light_source }) end end -- wool registrations if minetest.get_modpath("wool") then local colorlist = { {"white", "White Wool"}, {"grey", "Grey Wool"}, {"black", "Black Wool"}, {"red", "Red Wool"}, {"yellow", "Yellow Wool"}, {"green", "Green Wool"}, {"cyan", "Cyan Wool"}, {"blue", "Blue Wool"}, {"magenta", "Magenta Wool"}, {"orange", "Orange Wool"}, {"violet", "Violet Wool"}, {"brown", "Brown Wool"}, {"pink", "Pink Wool"}, {"dark_grey", "Dark Grey Wool"}, {"dark_green", "Dark Green Wool"}, } for i in ipairs(colorlist) do local color = colorlist[i][1] local colordesc = colorlist[i][2] stairsplus:register_all("wool", color, "wool:"..color, { description = colordesc, tiles = {"wool_"..color..".png"}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3, flammable=3,wool=1,not_in_creative_inventory=1}, sounds = default.node_sound_defaults(), sunlight_propagates = true, }) end end moreblocks-1.1.0/stairsplus/slabs.lua000066400000000000000000000215771316522574600177200ustar00rootroot00000000000000--[[ More Blocks: slab definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib -- Node will be called :slab_ 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 local slabs_defs = { [""] = 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 } } } for k,v in pairs(slabs_defs) do table.insert(stairsplus.shapes_list, { "slab_", k }) end function stairsplus:register_slab_alias(modname_old, subname_old, modname_new, subname_new) local defs = stairsplus.copytable(slabs_defs) 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 = stairsplus.copytable(slabs_defs) 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 = stairsplus.copytable(slabs_defs) local desc_base = S("%s Slab"):format(fields.description) for alternate, shape in pairs(defs) do local def = {} if type(shape) ~= "table" then def = { node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, (shape/16)-0.5, 0.5}, }, description = ("%s (%d/16)"):format(desc_base, shape) } else def = { node_box = { type = "fixed", fixed = shape, }, description = desc_base } end for k, v in pairs(fields) do def[k] = v end def.drawtype = "nodebox" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node def.groups = stairsplus:prepare_groups(fields.groups) if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":slab_" .. fields.drop .. alternate end minetest.register_node(":" .. modname .. ":slab_" .. subname .. alternate, def) end minetest.register_alias("stairs:slab_" .. subname, modname .. ":slab_" .. subname) circular_saw.known_nodes[recipeitem] = {modname, subname} -- Some saw-less recipes: 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 = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_quarter", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_quarter", recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_2", recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_three_quarter", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_14", recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_14", recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. "_15", recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname .. " 3", recipe = {modname .. ":stair_" .. subname, modname .. ":stair_" .. subname}, }) end moreblocks-1.1.0/stairsplus/slopes.lua000066400000000000000000000251051316522574600201100ustar00rootroot00000000000000--[[ More Blocks: slope definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib 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} } } -- Node will be called :slope_ 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 local slopes_defs = { [""] = { 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, }, } for k,v in pairs(slopes_defs) do table.insert(stairsplus.shapes_list, { "slope_", k }) end function stairsplus:register_slope_alias(modname_old, subname_old, modname_new, subname_new) local defs = stairsplus.copytable(slopes_defs) 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 = stairsplus.copytable(slopes_defs) 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 = stairsplus.copytable(slopes_defs) local desc = S("%s Slope"):format(fields.description) for alternate, def in pairs(defs) do for k, v in pairs(fields) do def[k] = v end def.drawtype = "mesh" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node def.description = desc def.groups = stairsplus:prepare_groups(fields.groups) if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":slope_" ..fields.drop..alternate end minetest.register_node(":" ..modname.. ":slope_" ..subname..alternate, def) end circular_saw.known_nodes[recipeitem] = {modname, subname} -- Some saw-less recipes: minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"}, }) minetest.register_craft({ type = "shapeless", output = recipeitem, recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slab_" .. subname, recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_half_raised", recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_inner_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_outer_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised", recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_cut_half"}, }) end moreblocks-1.1.0/stairsplus/stairs.lua000066400000000000000000000152451316522574600201140ustar00rootroot00000000000000--[[ More Blocks: stair definitions Copyright (c) 2011-2017 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib -- Node will be called :stair_ 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 local stairs_defs = { [""] = { 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 k,v in pairs(stairs_defs) do table.insert(stairsplus.shapes_list, { "stair_", k }) end function stairsplus:register_stair_alias(modname_old, subname_old, modname_new, subname_new) local defs = stairsplus.copytable(stairs_defs) 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 = stairsplus.copytable(stairs_defs) 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 = stairsplus.copytable(stairs_defs) local desc = S("%s Stairs"):format(fields.description) for alternate, def in pairs(defs) do for k, v in pairs(fields) do def[k] = v end def.drawtype = "nodebox" def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node def.description = desc def.groups = stairsplus:prepare_groups(fields.groups) if fields.drop and not (type(fields.drop) == "table") then def.drop = modname .. ":stair_" .. fields.drop .. alternate end minetest.register_node(":" .. modname .. ":stair_" .. subname .. alternate, def) end minetest.register_alias("stairs:stair_" .. subname, modname .. ":stair_" .. subname) circular_saw.known_nodes[recipeitem] = {modname, subname} -- Some saw-less recipes: 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 .. "_outer", recipe = {modname .. ":micro_" .. subname, modname .. ":slab_" .. subname}, }) 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}, }) minetest.register_craft({ type = "shapeless", output = modname .. ":stair_" .. subname .. "_right_half", recipe = {modname .. ":stair_" .. subname .. "_half"}, }) 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 .. "_inner", recipe = {modname .. ":micro_" .. subname, 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 .. "_outer", recipe = {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}, }) 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 moreblocks-1.1.0/textures/000077500000000000000000000000001316522574600155475ustar00rootroot00000000000000moreblocks-1.1.0/textures/default_brick.png000066400000000000000000000013141316522574600210520ustar00rootroot00000000000000PNG  IHDRh6IDAT=U|ϙw RIbaca'V4Hj"B@A!E AABٹss{^a?|2Ilkw)B G47iQ|gw>tQ)L)X._(hHh/QN9&zZɿON 03pP4jB*Lb1F !Rь?k- &20`7oj }sS|ݼD@DX$vʲ'B4]LDb,/w pѲ1:wcx7DufO>vޝ.^m&Zh{Y-wWH};Z]Ręf k8/4T/ȿF}?:4FVQ||>כ>oJEfRʮk8y~~+Pbo1 MlPLn޾y[}6 |Im߽Dhѻ6 =cp3+B&D) Rj5ŗPkˇ&↤o`|6ߵҭYM<\VUmJ%fmŀλq&{˲IENDB`moreblocks-1.1.0/textures/default_fence_overlay.png000066400000000000000000000004351316522574600226040ustar00rootroot00000000000000PNG  IHDRaIDAT8œ1r E߲eSctd&3@LB’l يⱻrY@!||m-dMkq(j\.˵BMZc,\55Cfsɿ?}z&KIENDB`moreblocks-1.1.0/textures/invisible.png000066400000000000000000000001041316522574600202340ustar00rootroot00000000000000PNG  IHDR  IDATc``OH IENDB`moreblocks-1.1.0/textures/moreblocks_cactus_brick.png000066400000000000000000000013161316522574600231320ustar00rootroot00000000000000PNG  IHDRh6IDAT(Us=}$5XAbX(H 4;+-,CRxO|nvgwgv~{~~tQrpZ~L<}9>oKܻ!Fj-sA|ԹRYE\؉Ad -JX^<^cmSu ?ɤYWlRY+EM x,9#:犉i{oOg'Iժ}*"3$d*66s@'7@)2.`D5`{n(J5I'RUx_z<:9nڤie04dV򕗶~5/a}Vs F ߾ʛp F'dm@M-8Icvbt5c?TTgV>X{J\gyCף"cLevOWU[CQ)|@Z7!S^] y (1 06!2)۶q#uϫؐpZ_=y߹繵qSmKfios23{1P>IENDB`moreblocks-1.1.0/textures/moreblocks_cactus_checker.png000066400000000000000000000012651316522574600234470ustar00rootroot00000000000000PNG  IHDR(-S&PLTECCCLLLTTTWWWYYYZZZ[[[\\\^^^bbbdddeeefffggghhhiiijjjkkklllmmmoooppprrrsssvvvwwwxxxzzz{{{|||}}}~~~\7Vx3Wy4Z~6\7]7^8_8`9a:b:c;di?j?k@l@mAnBoBrDuFxHyH{IMPmzEtRNSU/IDAT CP{Qh(ь(!)Fvlv=RKMBinQ)>n-Xo&VւR⊣goߧLv[2 u*X,GxT?fetZʔ='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 IDATMN0oSNQQ!([$%FTBUg{Az\$f$HaRgnd6jA'F@Sλ4Sk5Sfy'g\o'1~3Yf6TV.|j?ǯݢ5KGzپUణAڙhĻWx>!y3vg"Ur8j,:foo˪BIENDB`moreblocks-1.1.0/textures/moreblocks_circular_saw_side.png000066400000000000000000000007361316522574600241650ustar00rootroot00000000000000PNG  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@zcAjEIDATUJ@NLfԤ;)R|w%nԉiusk4\>=;79L"c Ax-e6U8L3򒠷iFM}չ"~Ӥ?wUl@y&XH@%ma(w/0[.8@m!'h2E#;A+ -OX7;gIENDB`moreblocks-1.1.0/textures/moreblocks_circular_saw_top.png000066400000000000000000000006711316522574600240410ustar00rootroot00000000000000PNG  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و 6IDATQN0@&MG*> ppZV:6JeFZ?v/y\~`Q66 8~>Rs!O4q䂳OJ]vDwWk00y߼p+O4&u53B{m@r>w0կ].9G9s0f Fu6Em HMO:VH?ffIENDB`moreblocks-1.1.0/textures/moreblocks_clean_glass.png000066400000000000000000000002611316522574600227470ustar00rootroot00000000000000PNG  IHDRRPLTEv9tRNSUdXAIDATAAJ8IH@BOb[M(}ㇺQ/|@\QG@m? 3< "IENDB`moreblocks-1.1.0/textures/moreblocks_clean_glass_detail.png000066400000000000000000000001401316522574600242650ustar00rootroot00000000000000PNG  IHDR%=m"PLTE,tRNS@f IDATc 0 HIENDB`moreblocks-1.1.0/textures/moreblocks_coal_checker.png000066400000000000000000000013501316522574600230760ustar00rootroot00000000000000PNG  IHDR(-SPPLTECCCLLLTTTWWWYYYZZZ[[[\\\^^^bbbdddeeefffggghhhiiijjjkkklllmmmoooppprrrsssvvvwwwxxxzzz{{{|||}}}~~~111...00/1101111212122222232323333343433444434444455545556667677767777787878788889899999:::99::9:::;:;;;:;;;<;<<<B(n[R7CؘZ/!]'B$<ɪwdQfڊ7ד=4%AB_X3Eֆ,ualZ ]c9M:d_3/8h-E va&V5';L 1Р71N#dXﵥ2ZNЧ\,H~*`@XN>7IENDB`moreblocks-1.1.0/textures/moreblocks_coal_glass.png000066400000000000000000000002331316522574600226020ustar00rootroot00000000000000PNG  IHDRabIDAT8cljjπ1CD)£R삩St|^ªN\BI!RS(@J hmm<q&jDգ,/kzLOlhIENDB`moreblocks-1.1.0/textures/moreblocks_coal_glass_detail.png000066400000000000000000000002371316522574600241300ustar00rootroot00000000000000PNG  IHDRafIDAT8SA0c>C<\;9><;?<;?==B?>MIHMKIMLKOLKOMLTRQURQUSRVTRVTSWTSWTTWUTXUT_[Z_\[`\[`]\a]\a]]a^]b_^d`_fdcfedgedhdcheehfemihmjinjinkjokjolkplkpmlqmlrnmsonsoospotpozwv{wv{xw~}~~~~2@IDATN0Գ@\7Dc^OjِAI'b\j'!{ =o)H/GNnLFDFwubXڄE5Tbkd"(r["F=[PUcV!wsOouo;綿z=J L4Y;>d3_MFf(Yc/gIENDB`moreblocks-1.1.0/textures/moreblocks_cobble_compressed.png000066400000000000000000000005441316522574600241520ustar00rootroot00000000000000PNG  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-1.1.0/textures/moreblocks_copperpatina.png000066400000000000000000000005051316522574600231620ustar00rootroot00000000000000PNG  IHDRR0PLTEYmSfWzfnp~VjcoWlWy[o~}xç~ơġUbKGDH pHYs  tIME+IDAToBpV ̮Ϸ* *ܫJ-˪˶:몼:ڭʩ=Ϭ/쭪y)"32Q0,"B" C'C,F+ G/J4M.M4M4N8!O* O2Q7S/S8V; W:WIDATc^`e@!lQL/BDD\@Z$5DX7{dcIENDB`moreblocks-1.1.0/textures/moreblocks_glass_stairsplus.png000066400000000000000000000003271316522574600241010ustar00rootroot00000000000000PNG  IHDR(-S?PLTEɦΩɨ̪ͣԢդԭڵݸ޺<tRNS@fFIDATM A0"_FLd$> Qx+<ʤѥK#S&JEHG$S&]aͥ<IENDB`moreblocks-1.1.0/textures/moreblocks_glow_glass.png000066400000000000000000000002351316522574600226360ustar00rootroot00000000000000PNG  IHDRadIDAT8c|y6? n< JL dT5//' U-6 //dqIj")5X9LhD*j&}D#QY_P_ 'IENDB`moreblocks-1.1.0/textures/moreblocks_glow_glass_detail.png000066400000000000000000000002411316522574600241550ustar00rootroot00000000000000PNG  IHDRahIDAT8c|y67πK^&J ^^SDyx,[%~@c\2)vɀE##1"M%IENDB`moreblocks-1.1.0/textures/moreblocks_glow_glass_stairsplus.png000066400000000000000000000002511316522574600251250ustar00rootroot00000000000000PNG  IHDRRPLTErt}LӂtRNS@fBIDAT[U̱BizH?l˶))OA5GPH+u#ԗOJbȺ?IENDB`moreblocks-1.1.0/textures/moreblocks_grey_bricks.png000066400000000000000000000013251316522574600230010ustar00rootroot00000000000000PNG  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-1.1.0/textures/moreblocks_iron_checker.png000066400000000000000000000015221316522574600231300ustar00rootroot00000000000000PNG  IHDRaIDAT8=MRx!">JiD^XjY3\z] iGmD $pf..~>VaR)666H"|v)t]Ge B0LB u2$>~ReFA٤^*\Y "4M]& nh4J.c{{EQX]]şsyWGضbHt],,Gx$I" EQBPT&h~814MZT*E0$v'/x(78$N/b6ZtJ2$Vd2 Eut]ywonm#}h4"LfV.Y[[c<F"`~ٌt:8;;T*.Bt:ZELU&oFc>_u=~~ZRxu*3@&'a["ENƱ!TfkwϲTU9{k/o9B").؂eJu:W2Z~R, |T1SJw@@JD]5IENDB`moreblocks-1.1.0/textures/moreblocks_iron_stone_bricks.png000066400000000000000000000007451316522574600242170ustar00rootroot00000000000000PNG  IHDR(-SPLTE" # % %! %"!(&%)'&+(',(',((30.310410421621622732743C?>CA?CBADBAFCBNLJOMLupn~{y{y}{~}~}~~~ľƾ (IDAT=KP9SID  tON.:uP'=TKX1C8򡫆Jo-1ў}J'# RPGU2 e~ŭE>teG#;Aj,NI!Ӓ' =n8=U=ud;~as0+^X d L[2~QIENDB`moreblocks-1.1.0/textures/moreblocks_junglestick.png000066400000000000000000000001721316522574600230170ustar00rootroot00000000000000PNG  IHDRb PLTE(:)C$|tRNS@fIDAT[c`@  $TARS IENDB`moreblocks-1.1.0/textures/moreblocks_obsidian_glass_stairsplus.png000066400000000000000000000002201316522574600257410ustar00rootroot00000000000000PNG  IHDRb PLTE&156LtRNS@f5IDAT[M1 @ %4 %H`LXJc%P0-TmdE7=IENDB`moreblocks-1.1.0/textures/moreblocks_plankstone.png000066400000000000000000000005171316522574600226560ustar00rootroot00000000000000PNG  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-1.1.0/textures/moreblocks_plankstone_2.png000066400000000000000000000005421316522574600230750ustar00rootroot00000000000000PNG  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-1.1.0/textures/moreblocks_rope.png000066400000000000000000000005441316522574600214450ustar00rootroot00000000000000PNG  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.?$iIDATEWDGAtQr)?;ßai-) V4=ELmoaJ8®@}0ŗӸ vS8Bx2Ty!IENDB`moreblocks-1.1.0/textures/moreblocks_split_stone_tile.png000066400000000000000000000004211316522574600240520ustar00rootroot00000000000000PNG  IHDR:IDATU0 PI-3CG4rh+P'#oxⵀ'-_?fm#'+ȍē]oq. satbdoԨ/aUMx YDJM8k)1'j"&ʲ6l0ia\IENDB`moreblocks-1.1.0/textures/moreblocks_super_glow_glass_detail.png000066400000000000000000000002341316522574600253750ustar00rootroot00000000000000PNG  IHDRacIDAT8œQ @DS ]N,tg-슋B>tLFR=dVjrf7\nB'96NҨ51KIP XIqo[xW IENDB`moreblocks-1.1.0/textures/moreblocks_super_glow_glass_stairsplus.png000066400000000000000000000002531316522574600263450ustar00rootroot00000000000000PNG  IHDRRPLTEx{K tRNS@fDIDAT[U̹@Py`KsdU )3v!- wBZBYÏ@yyXK?cȹJmIENDB`moreblocks-1.1.0/textures/moreblocks_sweeper.png000066400000000000000000000004661316522574600221550ustar00rootroot00000000000000PNG  IHDR(-SrPLTE5^q/5@! A! B" O`(VRW, X- ]q/^q/au1bw2f|4l7l7t;u;vFO8:WDp.u4лGT8 (.RTܝC&*dy+N02LqgC`';sн\,V69Ј{+g~?9e;Ͳc%pR*]^/+.IENDB`moreblocks-1.1.0/textures/moreblocks_trap_glass.png000066400000000000000000000002521316522574600226330ustar00rootroot00000000000000PNG  IHDRRPLTE3VtRNS@f@IDATQ@P="  XT wU,q`H_5UIENDB`moreblocks-1.1.0/textures/moreblocks_trap_glow_glass.png000066400000000000000000000002521316522574600236630ustar00rootroot00000000000000PNG  IHDRRPLTE3acky{}̦tRNS@f@IDATQ@P="  XT wU,q`H_5UIENDB`moreblocks-1.1.0/textures/moreblocks_trap_stone.png000066400000000000000000000005151316522574600226540ustar00rootroot00000000000000PNG  IHDR(-SfPLTEFFFMMMNNNRRRTTTUUU\\\]]]^^^___```eeejjjkkklllmmmnnnpp%qq&xx(xxx||)~~)*--../0567uy`1IDAT[NA Ec)@E0$cwT|;g=Ikӿ>Z0aZ!kcp b}][$\aĘS'z[.'mE]ee8 9ǒܣ[6C|0_' HnquXl,IENDB`moreblocks-1.1.0/textures/moreblocks_trap_super_glow_glass.png000066400000000000000000000002521316522574600251010ustar00rootroot00000000000000PNG  IHDRRPLTE3x{QtRNS@f@IDATQ@P="  XT wU,q`H_5UIENDB`moreblocks-1.1.0/textures/moreblocks_tree_stairsplus.png000066400000000000000000000004671316522574600237340ustar00rootroot00000000000000PNG  IHDRh6IDAT(;N0PR;q>B,H @fvV=BB 4H$&qnV_,ꇷHfEF@e_!put Ժ+/Ɍ# n{ݬ*;:S'JqEX~1ꓞrTԒp.`̗gt<*u$V!pEI5佐QYZ)__zv )6U#k4F]=`o ^|B; =l䂘IENDB`moreblocks-1.1.0/textures/moreblocks_wood_tile.png000066400000000000000000000006141316522574600224630ustar00rootroot00000000000000PNG  IHDR(-SPLTE[G)D8'E:(F:)H<*H=*K>'K>*K>+K?,M@,MA-OA)OA-OB.QB*QC-QC.SD.SE/TE/TE0XG-XH1XI2YH.ZJ2\J/_N5`K,`N0aN1aO5aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lW9lX:lY;r\=wa?wcAxb@xcAya:yc@zcAjEڙtRNS@fIDAT-10@ѿd FG ,e!!{rFXWYmo2>1.V:d6>d)i4*b4 %FؔՈQKF/ &!6+I^nQ SLIUsT$9(5ZIENDB`moreblocks-1.1.0/textures/moreblocks_wood_tile_center.png000066400000000000000000000004401316522574600240200ustar00rootroot00000000000000PNG  IHDR(-SxPLTE[G)E:(F:)K>'M@,MA-OA)OB.QC-QC.SD.SE/TE/TE0XH1XI2YH.ZJ2\J/_N5`K,`N0aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lX:lY;r\=wa?wcAya:7WRtRNS@fVIDATY@  [ȼz;puY`ݻ= u9܂c:Iq} VّH23'ӭIENDB`moreblocks-1.1.0/textures/moreblocks_wood_tile_full.png000066400000000000000000000006641316522574600235120ustar00rootroot00000000000000PNG  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@zcAjE3eIDATJ0&7I# ? &xj}3yd9r6: j(]ؤ<*TœQ BI.";[[Ոd$Ԙ v,e(uo>!{ 0n>]W9nl_e{pV~LO$%/>5~bApl4aD\IENDB`moreblocks-1.1.0/textures/moreblocks_wood_tile_up.png000066400000000000000000000004411316522574600231650ustar00rootroot00000000000000PNG  IHDR(-SxPLTE[G)E:(F:)K>'M@,MA-OA)OB.QC-QC.SD.SE/TE/TE0XH1XI2YH.ZJ2\J/_N5`K,`N0aQ6bO1bP6bQ6iU9iW:jU5jV9jX:kV5kW:lW6lX:lY;r\=wa?wcAya:7WRtRNS@fWIDAT CǏ]|,4:#0jM :wk,5`sSUDY%XSK(#/fIENDB`