1 Commits

Author SHA1 Message Date
17a4963cb6 Version MFF. 2018-09-08 13:07:27 +02:00
119 changed files with 1917 additions and 4787 deletions

View File

@ -1,13 +0,0 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.{lua,luacheckrc}]
indent_style = tab
indent_size = 4

View File

@ -1,35 +0,0 @@
std = "lua51+minetest"
unused_args = false
allow_defined_top = true
max_line_length = 999
stds.minetest = {
read_globals = {
"DIR_DELIM",
"minetest",
"core",
"dump",
"vector",
"nodeupdate",
"VoxelManip",
"VoxelArea",
"PseudoRandom",
"ItemStack",
"default",
table = {
fields = {
"copy",
},
},
}
}
read_globals = {
"intllib",
"protector",
"isprotect",
"IsPlayerNodeOwner",
"HasOwner",
"getLastOwner",
"GetNodeOwnerName",
}

View File

@ -1,9 +0,0 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.1.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- id: mixed-line-ending
args: [--fix=lf]

View File

@ -1,15 +0,0 @@
language: generic
addons:
apt:
packages:
- luarocks
install:
- pyenv global 3.6.3
- pip3 install --user pre-commit
- luarocks install --local luacheck
script:
- $HOME/.local/bin/pre-commit run --all-files
- $HOME/.luarocks/bin/luacheck .

View File

@ -1,78 +0,0 @@
# 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.3.0] - 2019-03-23
### Changed
- Stairs+ are now displayed in the creative inventory by default.
- Localization files now use the gettext `.po` format.
- Updated intllib support to avoid using deprecated functions.
### Fixed
- Node rotation now works correctly when placing Stairs+ nodes.
- Stairs+ glasslike nodes' textures are now easier to see.
## [1.2.0] - 2018-11-24
### Added
- Stairs+ nodes for `basic_materials`'s concrete, cement and brass blocks.
- Listring add for circular saw.
- **Stairs+:** New API function
`stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)`.
### Fixed
- The papyrus crafting recipe override is now properly applied over the
`default` mod's recipe.
- Centered wooden tiles are now craftable.
- Wool Stairs+ nodes can no longer be used in crafting.
- The circular saw can no longer replace items from the player's inventory
when it is full.
### Changed
- New crafting recipes for:
- Stone Tile
- Circle Stone Bricks
- Stairs+:
- Moved definitions to `stairsplus.defs` table into a separate file.
- Moved recipe definitions to `stairsplus.register_recipes` function
into a separate file.
## [1.1.0] - 2017-10-04
### Added
- 3 new node shapes in the circular saw (thin slabs, available in
"L-shaped", "corner-shaped" and "U-shaped" variations), all with 1/16
thickness.
- New Stairs+ nodes:
- Coral Skeleton
- Desert Sandstone, Silver Sandstone
- Desert Sandstone Brick, Silver Sandstone Brick
- Desert Sandstone Block, Silver Sandstone Block
- Obsidian Block
- Sandstone Block
- Stone Block, Desert Stone Block
- Straw
- Tin Block
- Wool (all colors)
- Other mods can now get a list of all the defined Stairs+ shapes.
## 1.0.0 - 2017-02-19
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v1.3.0...HEAD
[1.3.0]: https://github.com/minetest-mods/moreblocks/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/minetest-mods/moreblocks/compare/v1.0.0...v1.1.0

View File

@ -1,10 +0,0 @@
# 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.

5
LICENSE.md Normal file → Executable file
View File

@ -1,6 +1,7 @@
# zlib license zlib license
============
Copyright © 2011-2019 Hugo Locurcio and contributors Copyright (c) 2011-2015 Calinou 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.** **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.**

78
README.md Normal file → Executable file
View File

@ -1,77 +1,11 @@
# More Blocks More Blocks
===========
More Blocks for [Minetest](https://www.minetest.net/), a free and open source infinite More Blocks for Minetest <http://minetest.net>, a free/libre infinite
world block sandbox game. world block sandbox game.
[**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=509) To install, just clone this repository into your "mods" directory.
## Installation More Blocks code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported.
### Download the mod **Forum topic:** <https://forum.minetest.net/viewtopic.php?f=11&t=509>
To install More Blocks, clone this Git repository into your Minetest's `mods/`
directory:
```bash
git clone https://github.com/minetest-mods/moreblocks.git
```
You can also
[download a ZIP archive](https://github.com/minetest-mods/moreblocks/archive/master.zip)
of More Blocks. If you do so, you will need to extract the archive then rename
the resulting folder from `moreblocks-master` to `moreblocks` this is
**absolutely** required, as the mod won't work otherwise.
### Enable the mod
Once you have installed More Blocks, you need to enable it in Minetest.
The procedure is as follows:
#### Using the client's main menu
This is the easiest way to enable More Blocks when playing in singleplayer
(or on a server hosted from a client).
1. Start Minetest and switch to the **Local Game** tab.
2. Select the world you want to enable More Blocks in.
3. Click **Configure**, then enable `moreblocks` by double-clicking it
(or ticking the **Enabled** checkbox).
4. Save the changes, then start a game on the world you enabled More Blocks on.
5. More Blocks should now be running on your world.
#### Using a text editor
This is the recommended way to enable the mod on a server without using a GUI.
1. Make sure Minetest is not currently running (otherwise, it will overwrite
the changes when exiting).
2. Open the world's `world.mt` file using a text editor.
3. Add the following line at the end of the file:
```text
load_mod_moreblocks = true
```
If the line is already present in the file, then replace `false` with `true`
on that line.
4. Save the file, then start a game on the world you enabled More Blocks on.
5. More Blocks should now be running on your world.
## Version compatibility
More Blocks is currently primarily tested with Minetest 0.4.17.
It may or may not work with newer or older versions. Issues arising in older
versions than 0.4.17 will generally not be fixed.
## License
Copyright © 2011-2019 Hugo Locurcio and contributors
- More Blocks code is licensed under the zlib license, see
[`LICENSE.md`](LICENSE.md) for details.
- Unless otherwise specified, More Blocks textures are licensed under
[CC BY-SA 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/).
`moreblocks_copperpatina.png` was created by pithydon, and is licensed under
[CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/).

75
aliases.lua Normal file → Executable file
View File

@ -1,7 +1,7 @@
--[[ --[[
More Blocks: alias definitions More Blocks: alias definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
@ -10,6 +10,37 @@ minetest.register_alias("sweeper", "moreblocks:sweeper")
minetest.register_alias("circular_saw", "moreblocks:circular_saw") minetest.register_alias("circular_saw", "moreblocks:circular_saw")
minetest.register_alias("jungle_stick", "moreblocks:jungle_stick") minetest.register_alias("jungle_stick", "moreblocks:jungle_stick")
-- Wrong drops
-- //MFF(Mg|10/11/15)
-- Microblocks
for _,i in pairs({"", "_1", "_2", "_4", "_12", "_14", "_15"}) do
minetest.register_alias("moreblocks:micro_clay_brick" .. i, "moreblocks:micro_brick" .. i)
end
-- Panels
for _,i in pairs({"", "_1", "_2", "_4", "_12", "_14", "_15"}) do
minetest.register_alias("moreblocks:panel_clay_brick" .. i, "moreblocks:panel_brick" .. i)
end
-- Slabs
for _,i in pairs({"", "_1", "_2", "_quarter", "_three_quarter", "_14", "_15"}) do
minetest.register_alias("moreblocks:slab_clay_brick" .. i, "moreblocks:slab_brick" .. i)
end
-- Stairs
for _,i in pairs({"", "_outer", "_inner", "_alt", "_alt_1", "_alt_2", "_alt_4", "_half"}) do
minetest.register_alias("moreblocks:stair_clay_brick" .. i, "moreblocks:stair_brick" .. i)
end
-- Slopes
for _,i in pairs({"", "_half", "_half_raised", "_outer", "_outer_cut", "_outer_cut_half", "_outer_half", "_outer_half_raised", "_inner", "_inner_half", "_inner_half_raised"}) do
minetest.register_alias("moreblocks:slope_clay_brick" .. i, "moreblocks:slope_brick" .. i)
end
-- Old block/item replacement: -- Old block/item replacement:
minetest.register_alias("moreblocks:oerkkiblock", "default:mossycobble") minetest.register_alias("moreblocks:oerkkiblock", "default:mossycobble")
minetest.register_alias("moreblocks:screwdriver", "screwdriver:screwdriver") minetest.register_alias("moreblocks:screwdriver", "screwdriver:screwdriver")
@ -19,9 +50,6 @@ minetest.register_alias("moreblocks:stone_bricks", "default:stonebrick")
minetest.register_alias("moreblocks:stonebrick", "default:stonebrick") minetest.register_alias("moreblocks:stonebrick", "default:stonebrick")
minetest.register_alias("moreblocks:junglewood", "default:junglewood") minetest.register_alias("moreblocks:junglewood", "default:junglewood")
minetest.register_alias("moreblocks:jungle_wood", "default:junglewood") minetest.register_alias("moreblocks:jungle_wood", "default:junglewood")
minetest.register_alias("moreblocks:fence_junglewood", "default:fence_junglewood")
minetest.register_alias("moreblocks:fence_jungle_wood", "default:fence_junglewood")
minetest.register_alias("moreblocks:jungle_stick", "default:stick")
for _, t in pairs(circular_saw.names) do for _, t in pairs(circular_saw.names) do
minetest.register_alias("moreblocks:" .. t[1] .. "_jungle_wood" .. t[2], minetest.register_alias("moreblocks:" .. t[1] .. "_jungle_wood" .. t[2],
@ -32,13 +60,13 @@ minetest.register_alias("moreblocks:horizontaljungletree", "moreblocks:horizonta
minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile") minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile")
minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks") minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks")
minetest.register_alias("moreblocks:ironstonebrick", "moreblocks:iron_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:coalstone", "moreblocks:coal_stone")
minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone") minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone")
minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile") minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile")
minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full") 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_centered", "moreblocks:wood_tile_centered")
minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_offset") minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up")
minetest.register_alias("moreblocks:wood_tile_up", "moreblocks:wood_tile_offset")
minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down") minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down")
minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left") minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left")
minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right") minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right")
@ -57,49 +85,22 @@ minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf
minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick") minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick")
minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile") minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile")
minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree") minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree")
minetest.register_alias("moreblocks:empty_bookshelf","moreblocks:empty_shelf")
minetest.register_alias("moreblocks:split_stone_tile_alt","moreblocks:checker_stone_tile")
-- ABM for horizontal trees (fix facedir): -- ABM for horizontal trees (fix facedir):
local horizontal_tree_convert_facedir = {7, 12, 9, 18} local horizontal_tree_convert_facedir = {7, 12, 9, 18}
minetest.register_abm({ minetest.register_abm({
nodenames = {"moreblocks:horizontal_tree","moreblocks:horizontal_jungle_tree"}, nodenames = {"moreblocks:horizontal_tree"},
interval = 1, interval = 1,
chance = 1, chance = 1,
action = function(pos, node) 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 node.param2 = node.param2 < 3 and node.param2 or 0
minetest.set_node(pos, { minetest.set_node(pos, {
name = node.name, name = "default:tree",
param2 = horizontal_tree_convert_facedir[node.param2 + 1] param2 = horizontal_tree_convert_facedir[node.param2 + 1]
}) })
end, end,
}) })
minetest.register_lbm({ minetest.register_alias("moreblocks:jungle_stick", "default:stick")
name = "moreblocks:reduce_wood_tile_redundancy", minetest.register_alias("moreblocks:fence_jungle_wood", "default:fence_junglewood")
nodenames = {
"moreblocks:wood_tile_left",
"moreblocks:wood_tile_down",
"moreblocks:wood_tile_right",
"moreblocks:wood_tile_flipped",
},
action = function(pos, node)
if node.name:find("left") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=1})
elseif node.name:find("down") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=2})
elseif node.name:find("right") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=3})
else -- wood_tile_flipped
minetest.set_node(pos, {name = "moreblocks:wood_tile", param2=1})
end
minetest.log('action', "LBM replaced " .. node.name ..
" at " .. minetest.pos_to_string(pos))
end,
})

127
circular_saw.lua Normal file → Executable file
View File

@ -1,12 +1,11 @@
--[[ --[[
More Blocks: circular saw More Blocks: circular saw
Copyright © 2011-2019 Hugo Locurcio, Sokomine and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.S local S = moreblocks.intllib
local F = minetest.formspec_escape
circular_saw = {} circular_saw = {}
@ -27,45 +26,35 @@ circular_saw.cost_in_microblocks = {
1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2,
2, 3, 2, 4, 2, 4, 5, 6, 2, 3, 2, 4, 2, 4, 5, 6,
7, 1, 1, 2, 4, 6, 7, 8, 7, 1, 1, 2, 4, 6, 7, 8,
1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 2, 4, 4, 2, 6,
4, 2, 6, 7, 3, 7, 7, 4, 7, 3, 7, 7, 4, 8, 3, 2,
8, 3, 2, 6, 2, 1, 3, 4 6, 2, 1, 3, 4,
} }
-- This parameter is legacy node
circular_saw.names = { circular_saw.names = {
{"micro", "_1"}, {"micro", "_1"},
{"panel", "_1"}, {"panel", "_1"},
{"micro", "_2"},
{"panel", "_2"},
{"micro", "_4"},
{"panel", "_4"},
{"micro", ""}, {"micro", ""},
{"panel", ""}, {"panel", ""},
{"micro", "_12"}, {"micro", "_12"},
{"panel", "_12"}, {"panel", "_12"},
{"micro", "_14"},
{"panel", "_14"},
{"micro", "_15"}, {"micro", "_15"},
{"panel", "_15"}, {"panel", "_15"},
{"stair", "_outer"}, {"stair", "_outer"},
{"stair", ""}, {"stair", ""},
{"stair", "_inner"}, {"stair", "_inner"},
{"slab", "_1"}, {"slab", "_1"},
{"slab", "_2"},
{"slab", "_quarter"}, {"slab", "_quarter"},
{"slab", ""}, {"slab", ""},
{"slab", "_three_quarter"}, {"slab", "_three_quarter"},
{"slab", "_14"},
{"slab", "_15"}, {"slab", "_15"},
{"slab", "_two_sides"},
{"slab", "_three_sides"},
{"slab", "_three_sides_u"},
{"stair", "_half"}, {"stair", "_half"},
{"stair", "_alt_1"}, {"stair", "_alt_1"},
{"stair", "_alt_2"},
{"stair", "_alt_4"}, {"stair", "_alt_4"},
{"stair", "_alt"}, {"stair", "_alt"},
@ -77,7 +66,6 @@ circular_saw.names = {
{"slope", "_inner_half_raised"}, {"slope", "_inner_half_raised"},
{"slope", "_inner_cut"}, {"slope", "_inner_cut"},
{"slope", "_inner_cut_half"}, {"slope", "_inner_cut_half"},
{"slope", "_inner_cut_half_raised"}, {"slope", "_inner_cut_half_raised"},
{"slope", "_outer"}, {"slope", "_outer"},
{"slope", "_outer_half"}, {"slope", "_outer_half"},
@ -109,12 +97,14 @@ function circular_saw:get_output_inv(modname, material, amount, max)
for i = 1, #circular_saw.names do for i = 1, #circular_saw.names do
local t = circular_saw.names[i] local t = circular_saw.names[i]
local cost = circular_saw.cost_in_microblocks[i] if not t[3] then
local balance = math.min(math.floor(amount/cost), max) local cost = circular_saw.cost_in_microblocks[i]
local nodename = modname .. ":" .. t[1] .. "_" .. material .. t[2] local balance = math.min(math.floor(amount/cost), max)
if minetest.registered_nodes[nodename] then local nodename = modname .. ":" .. t[1] .. "_" .. material .. t[2]
pos = pos + 1 if minetest.registered_nodes[nodename] then
list[pos] = nodename .. " " .. balance pos = pos + 1
list[pos] = nodename .. " " .. balance
end
end end
end end
return list return list
@ -127,20 +117,15 @@ end
function circular_saw:reset(pos) function circular_saw:reset(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
local owned_by = meta:get_string("owner")
if owned_by and owned_by ~= "" then
owned_by = (" (%s)"):format(S("owned by @1", meta:get_string("owner")))
else
owned_by = ""
end
inv:set_list("input", {}) inv:set_list("input", {})
inv:set_list("micro", {}) inv:set_list("micro", {})
inv:set_list("output", {}) inv:set_list("output", {})
meta:set_int("anz", 0) meta:set_int("anz", 0)
meta:set_string("infotext", S("Circular Saw is empty") .. owned_by)
meta:set_string("infotext",
S("Circular Saw is empty (owned by %s)")
:format(meta:get_string("owner") or ""))
end end
@ -170,17 +155,9 @@ function circular_saw:update_inventory(pos, amount)
end end
local node_name = stack:get_name() or "" local node_name = stack:get_name() or ""
local node_def = stack:get_definition()
local name_parts = circular_saw.known_nodes[node_name] or "" local name_parts = circular_saw.known_nodes[node_name] or ""
local modname = name_parts[1] or "" local modname = name_parts[1] or ""
local material = name_parts[2] or "" local material = name_parts[2] or ""
local owned_by = meta:get_string("owner")
if owned_by and owned_by ~= "" then
owned_by = (" (%s)"):format(S("owned by @1", meta:get_string("owner")))
else
owned_by = ""
end
inv:set_list("input", { -- Display as many full blocks as possible: inv:set_list("input", { -- Display as many full blocks as possible:
node_name.. " " .. math.floor(amount / 8) node_name.. " " .. math.floor(amount / 8)
@ -195,7 +172,7 @@ function circular_saw:update_inventory(pos, amount)
-- 0-7 microblocks may remain left-over: -- 0-7 microblocks may remain left-over:
inv:set_list("micro", { inv:set_list("micro", {
modname .. ":micro_" .. material .. " " .. (amount % 8) modname .. ":micro_" .. material .. "_bottom " .. (amount % 8)
}) })
-- Display: -- Display:
inv:set_list("output", inv:set_list("output",
@ -205,10 +182,8 @@ function circular_saw:update_inventory(pos, amount)
meta:set_int("anz", amount) meta:set_int("anz", amount)
meta:set_string("infotext", meta:set_string("infotext",
S("Circular Saw is working on @1", S("Circular Saw is working on %s (owned by %s)")
node_def and node_def.description or material :format(material, meta:get_string("owner") or ""))
) .. owned_by
)
end end
@ -315,17 +290,6 @@ function circular_saw.on_metadata_inventory_put(
end end
end end
function circular_saw.allow_metadata_inventory_take(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input_stack = inv:get_stack(listname, index)
local player_inv = player:get_inventory()
if not player_inv:room_for_item("main", input_stack) then
return 0
else return stack:get_count()
end
end
function circular_saw.on_metadata_inventory_take( function circular_saw.on_metadata_inventory_take(
pos, listname, index, stack, player) pos, listname, index, stack, player)
@ -362,30 +326,22 @@ function circular_saw.on_metadata_inventory_take(
-- The recycle field plays no role here since it is processed immediately. -- The recycle field plays no role here since it is processed immediately.
end end
gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
function circular_saw.on_construct(pos) function circular_saw.on_construct(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots
meta:set_string( meta:set_string("formspec", "size[11,10]"..fancy_inv..
"formspec", "size[11,10]"..fancy_inv.. "label[0,0;" ..S("Input\nmaterial").. "]" ..
"label[0,0;" ..F(S("Input\nmaterial")).. "]" .. "list[current_name;input;1.5,0;1,1;]" ..
"list[current_name;input;1.5,0;1,1;]" .. "label[0,1;" ..S("Left-over").. "]" ..
"label[0,1;" ..F(S("Left-over")).. "]" .. "list[current_name;micro;1.5,1;1,1;]" ..
"list[current_name;micro;1.5,1;1,1;]" .. "label[0,2;" ..S("Recycle\noutput").. "]" ..
"label[0,2;" ..F(S("Recycle\noutput")).. "]" .. "list[current_name;recycle;1.5,2;1,1;]" ..
"list[current_name;recycle;1.5,2;1,1;]" .. "field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" ..
"field[0.3,3.5;1,1;max_offered;" ..F(S("Max")).. ":;${max_offered}]" .. "button[1,3.2;1,1;Set;" ..S("Set").. "]" ..
"button[1,3.2;1,1;Set;" ..F(S("Set")).. "]" .. "list[current_name;output;2.8,0;8,6;]" ..
"list[current_name;output;2.8,0;8,6;]" .. "list[current_player;main;1.5,6.25;8,4;]")
"list[current_player;main;1.5,6.25;8,4;]" ..
"listring[current_name;output]" ..
"listring[current_player;main]" ..
"listring[current_name;input]" ..
"listring[current_player;main]" ..
"listring[current_name;micro]" ..
"listring[current_player;main]" ..
"listring[current_name;recycle]" ..
"listring[current_player;main]"
)
meta:set_int("anz", 0) -- No microblocks inside yet. meta:set_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("max_offered", 99) -- How many items of this kind are offered by default?
@ -443,14 +399,10 @@ minetest.register_node("moreblocks:circular_saw", {
after_place_node = function(pos, placer) after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local owner = placer and placer:get_player_name() or "" local owner = placer and placer:get_player_name() or ""
local owned_by = owner
if owner ~= "" then
owned_by = (" (%s)"):format(S("owned by @1", owner))
end
meta:set_string("owner", owner) meta:set_string("owner", owner)
meta:set_string("infotext", S("Circular Saw is empty") .. owned_by) meta:set_string("infotext",
S("Circular Saw is empty (owned by %s)")
:format(owner))
end, end,
-- The amount of items offered per shape can be configured: -- The amount of items offered per shape can be configured:
@ -458,7 +410,6 @@ minetest.register_node("moreblocks:circular_saw", {
allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move, allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move,
-- Only input- and recycle-slot are intended as input slots: -- Only input- and recycle-slot are intended as input slots:
allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put, allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put,
allow_metadata_inventory_take = circular_saw.allow_metadata_inventory_take,
-- Taking is allowed from all slots (even the internal microblock slot). Moving is forbidden. -- 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: -- 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_put = circular_saw.on_metadata_inventory_put,

8
config.lua Normal file → Executable file
View File

@ -1,14 +1,14 @@
--[[ --[[
More Blocks: configuration handling More Blocks: configuration handling
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
moreblocks.config = {} moreblocks.config = {}
local function getbool_default(setting, default) local function getbool_default(setting, default)
local value = minetest.settings:get_bool(setting) local value = minetest.setting_getbool(setting)
if value == nil then if value == nil then
value = default value = default
end end
@ -21,9 +21,9 @@ local function setting(settingtype, name, default)
getbool_default("moreblocks." .. name, default) getbool_default("moreblocks." .. name, default)
else else
moreblocks.config[name] = moreblocks.config[name] =
minetest.settings:get("moreblocks." .. name) or default minetest.setting_get("moreblocks." .. name) or default
end end
end end
-- Show stairs/slabs/panels/microblocks in creative inventory (true or false): -- Show stairs/slabs/panels/microblocks in creative inventory (true or false):
setting("bool", "stairsplus_in_creative_inventory", true) setting("bool", "stairsplus_in_creative_inventory", false)

271
crafting.lua Normal file → Executable file
View File

@ -1,7 +1,7 @@
--[[ --[[
More Blocks: crafting recipes More Blocks: crafting recipes
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
@ -12,14 +12,21 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
output = "default:stick", output = "default:stick",
recipe = {{"group:sapling"},} recipe = {{"default:sapling"},}
})
minetest.register_craft({
output = "default:stick",
recipe = {{"default:junglesapling"},}
}) })
minetest.register_craft({ minetest.register_craft({
output = "default:wood", output = "default:wood",
recipe = { recipe = {
{"default:stick", "default:stick"}, {"default:stick", "default:stick", "default:stick"},
{"default:stick", "default:stick"}, {"default:stick", "default:stick", "default:stick"},
{"default:stick", "default:stick", "default:stick"}
-- MODIFICATION MADE FOR MFF ^
} }
}) })
@ -29,6 +36,12 @@ minetest.register_craft({
recipe = {"default:junglegrass", "default:dirt"}, recipe = {"default:junglegrass", "default:dirt"},
}) })
minetest.register_craft({
output = "default:dirt_with_grass",
type = "shapeless",
recipe = {"default:mese", "default:dirt"},
})
minetest.register_craft({ minetest.register_craft({
output = "default:mossycobble", output = "default:mossycobble",
type = "shapeless", type = "shapeless",
@ -36,27 +49,32 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:wood_tile_center 9", output = "default:mossycobble",
recipe = { type = "shapeless",
{"group:wood", "group:wood", "group:wood"}, recipe = {"default:mese_crystal_fragment", "default:cobble"},
{"group:wood", "moreblocks:wood_tile", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:wood_tile 9", output = "moreblocks:wood_tile 9",
recipe = { recipe = {
{"group:wood", "group:wood", "group:wood"}, {"default:wood", "default:wood", "default:wood"},
{"group:wood", "group:wood", "group:wood"}, {"default:wood", "default:wood", "default:wood"},
{"group:wood", "group:wood", "group:wood"}, {"default:wood", "default:wood", "default:wood"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", output = "moreblocks:wood_tile_flipped",
output = "moreblocks:wood_tile", recipe = {{"moreblocks:wood_tile"},}
recipe = {"moreblocks:wood_tile_flipped"} })
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({ minetest.register_craft({
@ -68,7 +86,7 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:wood_tile_offset", output = "moreblocks:wood_tile_up",
recipe = { recipe = {
{"default:stick"}, {"default:stick"},
{"moreblocks:wood_tile_center"}, {"moreblocks:wood_tile_center"},
@ -76,29 +94,33 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", output = "moreblocks:wood_tile_down",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_down"}
})
minetest.register_craft({
type = "shapeless",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_left"}
})
minetest.register_craft({
type = "shapeless",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_right"}
})
minetest.register_craft({
output = "moreblocks:circle_stone_bricks 5",
recipe = { recipe = {
{"", "default:stone", ""}, {"moreblocks:wood_tile_center"},
{"default:stone", "default:coal_lump", "default:stone"}, {"default:stick"},
{"", "default:stone", ""}, }
})
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"},
} }
}) })
@ -120,33 +142,6 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "moreblocks:all_faces_pine_tree 8",
recipe = {
{"default:pine_tree", "default:pine_tree", "default:pine_tree"},
{"default:pine_tree", "", "default:pine_tree"},
{"default:pine_tree", "default:pine_tree", "default:pine_tree"},
}
})
minetest.register_craft({
output = "moreblocks:all_faces_acacia_tree 8",
recipe = {
{"default:acacia_tree", "default:acacia_tree", "default:acacia_tree"},
{"default:acacia_tree", "", "default:acacia_tree"},
{"default:acacia_tree", "default:acacia_tree", "default:acacia_tree"},
}
})
minetest.register_craft({
output = "moreblocks:all_faces_aspen_tree 8",
recipe = {
{"default:aspen_tree", "default:aspen_tree", "default:aspen_tree"},
{"default:aspen_tree", "", "default:aspen_tree"},
{"default:aspen_tree", "default:aspen_tree", "default:aspen_tree"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:sweeper 4", output = "moreblocks:sweeper 4",
recipe = { recipe = {
@ -156,11 +151,10 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:stone_tile 9", output = "moreblocks:stone_tile 4",
recipe = { recipe = {
{"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble", "default:cobble"},
{"default:cobble", "default:stone", "default:cobble"}, {"default:cobble", "default:cobble"},
{"default:cobble", "default:cobble", "default:cobble"},
} }
}) })
@ -172,20 +166,12 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:checker_stone_tile", output = "moreblocks:split_stone_tile_alt",
recipe = { recipe = {
{"moreblocks:split_stone_tile"}, {"moreblocks:split_stone_tile"},
} }
}) })
-- When approaching the below craft, loop back to cobblestone, which can then be used to craft stone tiles again
minetest.register_craft({
output = "default:cobble",
recipe = {
{"moreblocks:checker_stone_tile"},
}
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:grey_bricks 2", output = "moreblocks:grey_bricks 2",
type = "shapeless", type = "shapeless",
@ -199,33 +185,9 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:empty_shelf", output = "moreblocks:empty_bookshelf",
type = "shapeless", type = "shapeless",
recipe = {"moreblocks:sweeper", "default:bookshelf"}, recipe = {"moreblocks:sweeper", "default:bookshelf"},
replacements = {{"default:bookshelf", "default:book 3"}},
-- When obtaining an empty shelf, return the books used in it as well
})
minetest.register_craft({
output = "moreblocks:empty_shelf",
type = "shapeless",
recipe = {"moreblocks:sweeper", "vessels:shelf"},
replacements = {{"vessels:shelf", "vessels:glass_bottle 3"}},
})
minetest.register_craft({
type = "shapeless",
output = "default:bookshelf",
recipe = {"moreblocks:empty_shelf", "default:book", "default:book", "default:book"},
})
minetest.register_craft({
output = "moreblocks:empty_shelf",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "", ""},
{"group:wood", "group:wood", "group:wood"},
}
}) })
minetest.register_craft({ minetest.register_craft({
@ -247,16 +209,16 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:plankstone 4", output = "moreblocks:plankstone 4",
recipe = { recipe = {
{"group:stone", "group:wood"}, {"default:stone", "default:wood"},
{"group:wood", "group:stone"}, {"default:wood", "default:stone"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:plankstone 4", output = "moreblocks:plankstone 4",
recipe = { recipe = {
{"group:wood", "group:stone"}, {"default:wood", "default:stone"},
{"group:stone", "group:wood"}, {"default:stone", "default:wood"},
} }
}) })
@ -419,36 +381,12 @@ minetest.register_craft({
recipe = {"default:mese_crystal_fragment", "default:stone"}, recipe = {"default:mese_crystal_fragment", "default:stone"},
}) })
minetest.register_craft({
output = "moreblocks:trap_desert_stone",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:desert_stone"},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:trap_glass", output = "moreblocks:trap_glass",
type = "shapeless", type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:glass"}, recipe = {"default:mese_crystal_fragment", "default:glass"},
}) })
minetest.register_craft({
output = "moreblocks:trap_obsidian_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:obsidian_glass"},
})
minetest.register_craft({
output = "moreblocks:trap_obsidian",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:obsidian"},
})
minetest.register_craft({
output = "moreblocks:trap_sandstone",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:sandstone"},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:cactus_brick", output = "moreblocks:cactus_brick",
type = "shapeless", type = "shapeless",
@ -480,57 +418,27 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = "moreblocks:dirt_compressed",
recipe = {
{'default:dirt', 'default:dirt', 'default:dirt'},
{'default:dirt', 'default:dirt', 'default:dirt'},
{'default:dirt', 'default:dirt', 'default:dirt'},
}
})
minetest.register_craft({
output = "default:dirt 9",
recipe = {{"moreblocks:dirt_compressed"}},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:cobble_compressed", output = "moreblocks:cobble_compressed",
recipe = { recipe = {
{"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble"},
{"default:cobble", "default:cobble", "default:cobble"}, {"default:cobble"},
{"default:cobble", "default:cobble", "default:cobble"}, -- MODIFICATION MADE FOR MFF
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = "default:cobble 9", output = "default:cobble 2", -- MODIFICATION MADE FOR MFF
recipe = { recipe = {
{"moreblocks:cobble_compressed"}, {"moreblocks:cobble_compressed"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
type = "cooking", output = "moreblocks:tar", recipe = "default:pine_tree", type = "cooking", output = "moreblocks:tar", recipe = "default:gravel",
}) })
minetest.register_craft({ if minetest.setting_getbool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then”
type = "shapeless",
output = "moreblocks:copperpatina",
recipe = {"group:water_bucket", "default:copperblock"},
replacements = {
{"group:water_bucket", "bucket:bucket_empty"}
}
})
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"moreblocks:copperpatina"},
}
})
if minetest.settings:get_bool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then”
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:circular_saw", output = "moreblocks:circular_saw",
recipe = { recipe = {
@ -540,3 +448,30 @@ if minetest.settings:get_bool("moreblocks.circular_saw_crafting") ~= false then
} }
}) })
end end
-- MODIFICATION MADE FOR MFF //MFF(Mg|08/09/15)
minetest.register_craft({
output = "moreblocks:horizontal_jungle_tree 2",
recipe = {
{"default:jungletree", "", "default:jungletree"},
}
})
minetest.register_craft({
output = "default:jungletree 2",
recipe = {
{"moreblocks:horizontal_jungle_tree"},
{"moreblocks:horizontal_jungle_tree"},
}
})
minetest.register_craft({
output = "default:junglewood 4",
recipe = {
{"moreblocks:horizontal_jungle_tree"},
}
})
-- END OF MODIFICATIONS

8
depends.txt Normal file → Executable file
View File

@ -1,6 +1,2 @@
default default
intllib? intllib?
stairs?
farming?
wool?
basic_materials?

16
init.lua Normal file → Executable file
View File

@ -3,18 +3,22 @@
** More Blocks ** ** More Blocks **
By Calinou, with the help of ShadowNinja and VanessaE. By Calinou, with the help of ShadowNinja and VanessaE.
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
===================================================================== =====================================================================
--]] --]]
moreblocks = {} moreblocks = {}
local modpath = minetest.get_modpath("moreblocks") local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
moreblocks.intllib = S
local S, NS = dofile(modpath .. "/intllib.lua") local modpath = minetest.get_modpath("moreblocks")
moreblocks.S = S
moreblocks.NS = NS
dofile(modpath .. "/config.lua") dofile(modpath .. "/config.lua")
dofile(modpath .. "/circular_saw.lua") dofile(modpath .. "/circular_saw.lua")
@ -24,6 +28,6 @@ dofile(modpath .. "/redefinitions.lua")
dofile(modpath .. "/crafting.lua") dofile(modpath .. "/crafting.lua")
dofile(modpath .. "/aliases.lua") dofile(modpath .. "/aliases.lua")
if minetest.settings:get_bool("log_mods") then if minetest.setting_getbool("log_mods") then
minetest.log("action", S("[moreblocks] loaded.")) minetest.log("action", S("[moreblocks] loaded."))
end end

View File

@ -1,44 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -1,286 +0,0 @@
# German translation for More Blocks.
# Copyright © 2011-2019 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# Xanthin, 2014.
# CodeXP <codexp@gmx.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "Kreissäge"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"Ausgangs-\n"
"material"
#: circular_saw.lua
msgid "Left-over"
msgstr "Rest"
#: circular_saw.lua
msgid "Max"
msgstr "Anzahl"
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"Wiederver-\n"
"werten"
#: circular_saw.lua
msgid "Set"
msgstr "Ok"
#: circular_saw.lua
msgid "owned by @1"
msgstr "gehört @1"
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "Kreissäge ist leer"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "Kreissäge arbeitet mit @1"
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] geladen."
#: nodes.lua
msgid "Deprecated"
msgstr "veraltet"
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr "allseitiger Akazienbaumstamm"
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr "allseitiger Espenbaumstamm"
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr "allseitiger Tropenbaumstamm"
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr "allseitiger Kieferbaumstamm"
#: nodes.lua
msgid "All-faces Tree"
msgstr "allseitiger Baumstamm"
#: nodes.lua
msgid "Cactus Brick"
msgstr "Kaktusziegel"
#: nodes.lua
msgid "Cactus Checker"
msgstr "Kaktus-Mosaik"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "Holzfliese mittig"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr "Stein-Mosaik"
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "Kreissteinziegel"
#: nodes.lua
msgid "Clean Glass"
msgstr "Klares Glas"
#: nodes.lua
msgid "Coal Checker"
msgstr "Kohlen-Mosaik"
#: nodes.lua
msgid "Coal Glass"
msgstr "Kohleglas"
#: nodes.lua
msgid "Coal Stone"
msgstr "Kohlestein"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "Kohlesteinziegel"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr "Gepresster Kopfsteinpflaster"
#: nodes.lua
msgid "Compressed Dirt"
msgstr "Gepresste Erde"
#: nodes.lua
msgid "Copper Patina Block"
msgstr "Kupfer Edelrostblock"
#: nodes.lua
msgid "Empty Shelf"
msgstr "Leeres Regal"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "Vollholzfliese"
#: nodes.lua
msgid "Glow Glass"
msgstr "Leuchtglas"
#: nodes.lua
msgid "Iron Checker"
msgstr "Metall-Mosaik"
#: nodes.lua
msgid "Iron Glass"
msgstr "metallisiertes Glas"
#: nodes.lua
msgid "Iron Stone"
msgstr "Eisenstein"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "Eisensteinziegel"
#: nodes.lua
msgid "Plankstone"
msgstr "Brettstein"
#: nodes.lua
msgid "Rope"
msgstr "Seil"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "Geteilte Steinfliese"
#: nodes.lua
msgid "Stone Bricks"
msgstr "Steinziegel"
#: nodes.lua
msgid "Stone Tile"
msgstr "Steinfliese"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "Superleuchtglas"
#: nodes.lua
msgid "Sweeper"
msgstr "Besen"
#: nodes.lua
msgid "Tar"
msgstr "Teer"
#: nodes.lua
msgid "Trap Desert Stone"
msgstr "Wüstensteinfalle"
#: nodes.lua
msgid "Trap Glass"
msgstr "Glasfalle"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "Leuchtglasfalle"
#: nodes.lua
msgid "Trap Obsidian"
msgstr "Obsidianfalle"
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr "Obsidianglasfalle"
#: nodes.lua
msgid "Trap Sandstone"
msgstr "Sandsteinfalle"
#: nodes.lua
msgid "Trap Stone"
msgstr "Steinfalle"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "Superleuchtglasfalle"
#: nodes.lua
msgid "Wooden Tile"
msgstr "Holzfliese"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr "Holzfliese versetzt"
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr "Holzfliese unten"
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr "Holzfliese links"
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr "Holzfliese rechts"
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "Tut mir leid, dieser Bereich gehört @1."
#: ownership.lua
msgid "someone"
msgstr "jemand"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "%smikroblock"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "%splatte"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr "%sneigung"
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "%spaneel"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "%streppe"

67
locale/de.txt Executable file
View File

@ -0,0 +1,67 @@
# 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.

View File

@ -1,282 +0,0 @@
# Spanish translation for More Blocks.
# Copyright © 2011-2019 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# kaeza, 2013.
# CodeXP <codexp@gmx.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr ""
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
#: circular_saw.lua
msgid "Left-over"
msgstr ""
#: circular_saw.lua
msgid "Max"
msgstr ""
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
#: circular_saw.lua
msgid "Set"
msgstr ""
#: circular_saw.lua
msgid "owned by @1"
msgstr ""
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr ""
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr ""
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] cargado."
#: nodes.lua
msgid "Deprecated"
msgstr ""
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Tree"
msgstr "Tronco de Árbol"
#: nodes.lua
msgid "Cactus Brick"
msgstr "Ladrillos de Cactus"
#: nodes.lua
msgid "Cactus Checker"
msgstr "Cuadros de Cactus"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "Parquet Centrado"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr ""
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "Bloques de Piedra Circulares"
#: nodes.lua
msgid "Clean Glass"
msgstr "Cristal Limpio"
#: nodes.lua
msgid "Coal Checker"
msgstr "Cuadros de Carbón"
#: nodes.lua
msgid "Coal Glass"
msgstr "Cristal con Carbón"
#: nodes.lua
msgid "Coal Stone"
msgstr "Carbón y Piedra"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr ""
#: nodes.lua
msgid "Compressed Dirt"
msgstr ""
#: nodes.lua
msgid "Copper Patina Block"
msgstr ""
#: nodes.lua
msgid "Empty Shelf"
msgstr ""
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "Parquet Completo"
#: nodes.lua
msgid "Glow Glass"
msgstr "Cristal Brillante"
#: nodes.lua
msgid "Iron Checker"
msgstr "Cuadros de Hierro"
#: nodes.lua
msgid "Iron Glass"
msgstr "Cristal con Hierro"
#: nodes.lua
msgid "Iron Stone"
msgstr "Hierro y Piedra"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Plankstone"
msgstr "Tablones de piedra"
#: nodes.lua
msgid "Rope"
msgstr "Soga"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "Baldosas de Piedra Partida"
#: nodes.lua
msgid "Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Stone Tile"
msgstr "Baldosa de Piedra"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "Cristal Súper Brillante"
#: nodes.lua
msgid "Sweeper"
msgstr "Limpiador"
#: nodes.lua
msgid "Tar"
msgstr ""
#: nodes.lua
msgid "Trap Desert Stone"
msgstr ""
#: nodes.lua
msgid "Trap Glass"
msgstr "Cristal Trampa"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr ""
#: nodes.lua
msgid "Trap Obsidian"
msgstr ""
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr ""
#: nodes.lua
msgid "Trap Sandstone"
msgstr ""
#: nodes.lua
msgid "Trap Stone"
msgstr "Piedra Trampa"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr ""
#: nodes.lua
msgid "Wooden Tile"
msgstr "Parquet"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr ""
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr ""
#: ownership.lua
msgid "someone"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "Microbloque de %s"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "Losa de %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "Panel de %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "Escalera de %s"

52
locale/es.txt Executable file
View File

@ -0,0 +1,52 @@
# 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

View File

@ -1,287 +0,0 @@
# French translation for More Blocks.
# Copyright © 2011-2019 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# Hugo Locurcio <hugo.locurcio@hugo.pro>, 2013-2019.
# Jat15, 2013.
# CodeXP <codexp@gmx.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: 2019-03-20 21:10+0100\n"
"Last-Translator: Hugo Locurcio <hugo.locurcio@hugo.pro>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "Scie circulaire"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"Matériau\n"
"d'entrée"
#: circular_saw.lua
msgid "Left-over"
msgstr "Reste"
#: circular_saw.lua
msgid "Max"
msgstr "Max"
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"Sortie à\n"
"recycler"
#: circular_saw.lua
msgid "Set"
msgstr "Définir"
#: circular_saw.lua
msgid "owned by @1"
msgstr "propriété de @1"
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "Scie circulaire vide"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "Scie circulaire manipulant @1"
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] a été chargé."
#: nodes.lua
msgid "Deprecated"
msgstr "déprécié"
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr "Tronc d'arbre d'acacia (toutes faces)"
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr "Tronc d'arbre de peuplier (toutes faces)"
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr "Tronc d'arbre de jungle (toutes faces)"
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr "Tronc d'arbre de pin (toutes faces)"
#: nodes.lua
msgid "All-faces Tree"
msgstr "Tronc d'arbre (toutes faces)"
#: nodes.lua
msgid "Cactus Brick"
msgstr "Briques de cactus"
#: nodes.lua
msgid "Cactus Checker"
msgstr "Damier en cactus"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "Dalle en bois centrée"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr "Damier de dalle en pierre"
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "Briques en pierre circulaires"
#: nodes.lua
msgid "Clean Glass"
msgstr "Verre propre"
#: nodes.lua
msgid "Coal Checker"
msgstr "Damier en charbon"
#: nodes.lua
msgid "Coal Glass"
msgstr "Verre de charbon"
#: nodes.lua
msgid "Coal Stone"
msgstr "Pierre de charbon"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "Briques en pierre de charbon"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr "Pierre taillée compressée"
#: nodes.lua
msgid "Compressed Dirt"
msgstr "Terre compressée"
#: nodes.lua
msgid "Copper Patina Block"
msgstr "Bloc de patine de cuivre"
#: nodes.lua
msgid "Empty Shelf"
msgstr "Étagère vide"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "Dalle en bois complète"
#: nodes.lua
msgid "Glow Glass"
msgstr "Verre brillant"
#: nodes.lua
msgid "Iron Checker"
msgstr "Damier de fer"
#: nodes.lua
msgid "Iron Glass"
msgstr "Verre de fer"
#: nodes.lua
msgid "Iron Stone"
msgstr "Pierre de fer"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "Briques en pierre de fer"
#: nodes.lua
msgid "Plankstone"
msgstr "Pierre-bois"
#: nodes.lua
msgid "Rope"
msgstr "Corde"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "Dalle en pierre découpée"
#: nodes.lua
msgid "Stone Bricks"
msgstr "Briques en pierre"
#: nodes.lua
msgid "Stone Tile"
msgstr "Dalle en pierre"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "Verre très brillant"
#: nodes.lua
msgid "Sweeper"
msgstr "Balai"
#: nodes.lua
msgid "Tar"
msgstr "Bitume"
#: nodes.lua
msgid "Trap Desert Stone"
msgstr "Pierre du désert traversable"
#: nodes.lua
msgid "Trap Glass"
msgstr "Verre traversable"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "Verre brillant traversable"
#: nodes.lua
msgid "Trap Obsidian"
msgstr "Obsidienne traversable"
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr "Verre d'obsidienne traversable"
#: nodes.lua
msgid "Trap Sandstone"
msgstr "Grès traversable"
#: nodes.lua
msgid "Trap Stone"
msgstr "Pierre traversable"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "Verre très brillant traversable"
#: nodes.lua
msgid "Wooden Tile"
msgstr "Dalle en bois"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr "Dalle en bois décalée"
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr "Dalle en bois vers le bas"
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr "Dalle en bois vers la gauche"
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr "Dalle en bois vers la droite"
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "Désolé, @1 possède cet endroit."
#: ownership.lua
msgid "someone"
msgstr "quelqu'un"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "Microbloc en %s"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "Demi-dalle en %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr "Pente en %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "Barre en %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "Escaliers en %s"

72
locale/fr.txt Executable file
View File

@ -0,0 +1,72 @@
# Translation by Calinou
###init.lua###
[moreblocks] loaded. = [moreblocks] a <20>t<EFBFBD> charg<72>.
Jungle Wooden Planks = Planches de bois de jungle
Empty Bookshelf = <20>tag<61>re vide
Clean Glass = Verre propre
Plankstone = Pierre-bois
Wooden Tile = Dalle en bois
Full Wooden Tile = Dalle en bois compl<70>te
Centered Wooden Tile = Dalle en bois centr<74>e
Up Wooden Tile = Dalle en bois vers le haut
Down Wooden Tile = Dalle en bois vers le bas
Left Wooden Tile = Dalle en bois vers la gauche
Right Wooden Tile = Dalle en bois vers la droite
Circle Stone Bricks = Briques en pierre circulaires
Stone Tile = Dalle en pierre
Split Stone Tile = Dalle en pierre d<>coup<75>e
Glow Glass = Verre brillant
Super Glow Glass = Verre tr<74>s 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 tr<74>s 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 = B<>ton en bois de jungle
Horizontal Tree = Tronc d'arbre horizontal
Horizontal Jungle Tree = Tronc d'arbre de jungle horizontal
Rope = Corde
All-faces Tree = Tronc d'arbre
###redefinition.lua###
Wooden = bois
Papyrus = Papyrus
Dry Shrub = Buisson mort
Sapling = Pousse d'arbre
Wooden Planks = Planches de bois
Ladder = <20>chelle
Glass = Verre
###circular_saw.lua###
Circular Saw = Scie circulaire
Circular saw, empty (owned by %s) = Scie circulaire, vide (propri<72>t<EFBFBD> de %s)
Circular saw, working with %s (owned by %s) = Scie circulaire, manipule %s (propri<72>t<EFBFBD> de %s)
Circular saw, empty = Scie circulaire, vide
Circular saw is empty (owned by %s) = Scie circulaire est vide (propri<72>t<EFBFBD> de %s)
Input material = Entr<74>e du mat<61>riel
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 = Barri<72>re en %s

View File

@ -1,286 +0,0 @@
# Italian translation for More Blocks.
# Copyright © 2011-2019 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# Emon, 2016.
# CodeXP <codexp@gmx.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "Sega circolare"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"Materiale\n"
"iniziale"
#: circular_saw.lua
msgid "Left-over"
msgstr "Scarto"
#: circular_saw.lua
msgid "Max"
msgstr "Max."
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"Ricicla\n"
"finale"
#: circular_saw.lua
msgid "Set"
msgstr "Imp."
#: circular_saw.lua
msgid "owned by @1"
msgstr ""
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "Sega circolare, vuota"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "Sega circolare, in funzione su @1"
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] caricato."
#: nodes.lua
msgid "Deprecated"
msgstr ""
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Tree"
msgstr "Albero su ogni lato"
#: nodes.lua
msgid "Cactus Brick"
msgstr "Mattoni di cactus"
#: nodes.lua
msgid "Cactus Checker"
msgstr "Scacchiera in cactus"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "Mattonella in legno centrata"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr ""
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "Mattoni concentrici in pietra"
#: nodes.lua
msgid "Clean Glass"
msgstr "Vetro pulito"
#: nodes.lua
msgid "Coal Checker"
msgstr "Scacchiera in carbone"
#: nodes.lua
msgid "Coal Glass"
msgstr "Vetro e carbone"
#: nodes.lua
msgid "Coal Stone"
msgstr "Pietra in carbone"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "Mattoni di pietra in carbone"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr ""
#: nodes.lua
msgid "Compressed Dirt"
msgstr ""
#: nodes.lua
msgid "Copper Patina Block"
msgstr ""
#: nodes.lua
msgid "Empty Shelf"
msgstr "Scaffale Vuoto"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "Mattonella in legno pieno"
#: nodes.lua
msgid "Glow Glass"
msgstr "Vetro luminoso"
#: nodes.lua
msgid "Iron Checker"
msgstr "Scacchiera in ferro"
#: nodes.lua
msgid "Iron Glass"
msgstr "Vetro e ferro"
#: nodes.lua
msgid "Iron Stone"
msgstr "Pietra in ferro"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "Mattoni di pietra in ferro"
#: nodes.lua
msgid "Plankstone"
msgstr "Pietra e legno"
#: nodes.lua
msgid "Rope"
msgstr "Corda"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "Mattonella in pietra divisa"
#: nodes.lua
msgid "Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Stone Tile"
msgstr "Mattonella in pietra"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "Super vetro luminoso"
#: nodes.lua
msgid "Sweeper"
msgstr "Spazzola"
#: nodes.lua
msgid "Tar"
msgstr ""
#: nodes.lua
msgid "Trap Desert Stone"
msgstr ""
#: nodes.lua
msgid "Trap Glass"
msgstr "Vetro trappola"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "Vetro luminoso trappola"
#: nodes.lua
msgid "Trap Obsidian"
msgstr ""
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr ""
#: nodes.lua
msgid "Trap Sandstone"
msgstr ""
#: nodes.lua
msgid "Trap Stone"
msgstr "Pietra trappola"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "Super vetro luminoso trappola"
#: nodes.lua
msgid "Wooden Tile"
msgstr "Mattonella in legno"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr ""
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "Spiacente, quel punto è di proprietà di @1"
#: ownership.lua
msgid "someone"
msgstr "qualcuno"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "Microblocco %s"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "Lastra - %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "Pannello - %s"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "Scale - %s"

View File

@ -1,290 +0,0 @@
# Russian translation for MOREBLOCKS minetest mod.
# Copyright (C) 2018 Hugo Locurcio and contributors
# This file is distributed under the same license as the MOREBLOCKS package.
# CodeXP <codexp@gmx.net>, 2018.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: MOREBLOCKS MOD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 23:30+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "циркулярная пила"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"Входной\n"
"материал"
#: circular_saw.lua
msgid "Left-over"
msgstr "Остатки"
#: circular_saw.lua
msgid "Max"
msgstr "Кол."
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"Пере-\n"
"обработка"
#: circular_saw.lua
msgid "Set"
msgstr "ОК"
#: circular_saw.lua
msgid "owned by @1"
msgstr "принадлежит @1"
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "циркулярная пила пустая"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "циркулярная пила, @1 в обработке"
#: init.lua
msgid "[MOD] moreblocks loaded."
msgstr "[MOD] moreblocks загружен."
#: nodes.lua
msgid "Deprecated"
msgstr "устаревший"
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr "всестороннее бревно акации"
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr "всестороннее бревно осины"
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr "всестороннее бревно дерева джунглей"
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr "всестороннее бревно сосновое"
#: nodes.lua
msgid "All-faces Tree"
msgstr "всестороннее бревно дерева"
#: nodes.lua
msgid "Cactus Brick"
msgstr "кирпич из кактуса"
#: nodes.lua
msgid "Cactus Checker"
msgstr "мозаика из кактуса"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "деревянная мозаика (центр)"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr "каменная мозаика"
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "кольцевой камень"
#: nodes.lua
msgid "Clean Glass"
msgstr "чистое стекло"
#: nodes.lua
msgid "Coal Checker"
msgstr "угольная мозаика"
#: nodes.lua
msgid "Coal Glass"
msgstr "угольное стекло"
#: nodes.lua
msgid "Coal Stone"
msgstr "угольный камень"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "угольно-каменный кирпич"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr "прессованный булыжник"
#: nodes.lua
msgid "Compressed Dirt"
msgstr "прессованная земля"
#: nodes.lua
msgid "Copper Patina Block"
msgstr "медный патинированный блок"
#: nodes.lua
msgid "Empty Shelf"
msgstr "пустые полки"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "деревянная мозаика"
#: nodes.lua
msgid "Glow Glass"
msgstr "светящееся стекло"
#: nodes.lua
msgid "Iron Checker"
msgstr "стальная мозаика"
#: nodes.lua
msgid "Iron Glass"
msgstr "металлизированное стекло"
#: nodes.lua
msgid "Iron Stone"
msgstr "железный камень"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "железно-каменный кирпич"
#: nodes.lua
msgid "Plankstone"
msgstr "дерево-каменная мозаика"
#: nodes.lua
msgid "Rope"
msgstr "верёвка"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "каменная мозаика"
#: nodes.lua
msgid "Stone Bricks"
msgstr "каменный кирпич"
#: nodes.lua
msgid "Stone Tile"
msgstr "каменная плитка"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "супер светящееся стекло"
#: nodes.lua
msgid "Sweeper"
msgstr "метёлка"
#: nodes.lua
msgid "Tar"
msgstr "смола"
#: nodes.lua
msgid "Trap Desert Stone"
msgstr "мнимый пустынный камень"
#: nodes.lua
msgid "Trap Glass"
msgstr "мнимое стекло"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "мнимое светящееся стекло"
#: nodes.lua
msgid "Trap Obsidian"
msgstr "мнимый обсидиан"
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr "мнимое обсидиановое стекло"
#: nodes.lua
msgid "Trap Sandstone"
msgstr "мнимый песчаник"
#: nodes.lua
msgid "Trap Stone"
msgstr "мнимый камень"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "мнимое супер светящееся стекло"
#: nodes.lua
msgid "Wooden Tile"
msgstr "деревянная мозаика"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr "деревянная мозаика (сверху)"
# @deprecated
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr "деревянная мозаика (снизу)"
# @deprecated
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr "деревянная мозаика (слева)"
# @deprecated
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr "деревянная мозаика (справа)"
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "Извините, это принадлежит @1."
#: ownership.lua
msgid "someone"
msgstr "кому-то"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "%s (микроблок)"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "%s (плита)"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr "%s (наклон)"
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "%s (панель)"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "%s (лестница)"

View File

@ -1,284 +0,0 @@
# Template translation for More Blocks.
# Copyright © 2011-2019 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# CodeXP <codexp@gmx.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr ""
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
#: circular_saw.lua
msgid "Left-over"
msgstr ""
#: circular_saw.lua
msgid "Max"
msgstr ""
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
#: circular_saw.lua
msgid "Set"
msgstr ""
#: circular_saw.lua
msgid "owned by @1"
msgstr ""
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr ""
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr ""
#: init.lua
msgid "[moreblocks] loaded."
msgstr ""
#: nodes.lua
msgid "Deprecated"
msgstr ""
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr ""
#: nodes.lua
msgid "All-faces Tree"
msgstr ""
#: nodes.lua
msgid "Cactus Brick"
msgstr ""
#: nodes.lua
msgid "Cactus Checker"
msgstr ""
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Checker Stone Tile"
msgstr ""
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Clean Glass"
msgstr ""
#: nodes.lua
msgid "Coal Checker"
msgstr ""
#: nodes.lua
msgid "Coal Glass"
msgstr ""
#: nodes.lua
msgid "Coal Stone"
msgstr ""
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr ""
#: nodes.lua
msgid "Compressed Dirt"
msgstr ""
#: nodes.lua
msgid "Copper Patina Block"
msgstr ""
#: nodes.lua
msgid "Empty Shelf"
msgstr ""
#: nodes.lua
msgid "Full Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Glow Glass"
msgstr ""
#: nodes.lua
msgid "Iron Checker"
msgstr ""
#: nodes.lua
msgid "Iron Glass"
msgstr ""
#: nodes.lua
msgid "Iron Stone"
msgstr ""
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Plankstone"
msgstr ""
#: nodes.lua
msgid "Rope"
msgstr ""
#: nodes.lua
msgid "Split Stone Tile"
msgstr ""
#: nodes.lua
msgid "Stone Bricks"
msgstr ""
#: nodes.lua
msgid "Stone Tile"
msgstr ""
#: nodes.lua
msgid "Super Glow Glass"
msgstr ""
#: nodes.lua
msgid "Sweeper"
msgstr ""
#: nodes.lua
msgid "Tar"
msgstr ""
#: nodes.lua
msgid "Trap Desert Stone"
msgstr ""
#: nodes.lua
msgid "Trap Glass"
msgstr ""
#: nodes.lua
msgid "Trap Glow Glass"
msgstr ""
#: nodes.lua
msgid "Trap Obsidian"
msgstr ""
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr ""
#: nodes.lua
msgid "Trap Sandstone"
msgstr ""
#: nodes.lua
msgid "Trap Stone"
msgstr ""
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr ""
#: nodes.lua
msgid "Wooden Tile"
msgstr ""
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr ""
# @deprecated
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr ""
# @deprecated
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr ""
# @deprecated
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr ""
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr ""
#: ownership.lua
msgid "someone"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr ""
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr ""
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr ""

64
locale/template.txt Executable file
View File

@ -0,0 +1,64 @@
###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 =

72
models/moreblocks_slope.obj Normal file → Executable file
View File

@ -1,56 +1,26 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 0.500000 # www.blender.org
v -0.500000 0.500000 0.500000 mtllib moreblocks_slope.mtl
v -0.500000 -0.500000 -0.500000 o Cube_Cube.002
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
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 v -0.500000 -0.500000 -0.500000
vt 0.0000 1.0000 v 0.500000 -0.500000 -0.500000
vt 0.0000 0.0000 vt 1.000000 1.000000
vt 1.0000 0.0000 vt 0.000000 1.000000
vn 0.0000 -0.0000 1.0000 vt 0.000000 0.000000
vt 1.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.707100 -0.707100
usemtl None
s off s off
f 15/15/5 16/16/5 17/17/5 18/18/5 f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/3/2 3/4/2 5/1/2 6/2/2
f 2/1/3 5/3/3 3/4/3
f 1/2/4 4/3/4 6/4/4
f 2/1/5 1/2/5 6/3/5 5/4/5

87
models/moreblocks_slope_cut.obj Normal file → Executable file
View File

@ -1,68 +1,33 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 0.500000 # www.blender.org
v -0.500000 -0.000000 0.500000 mtllib moreblocks_slope_cut.mtl
v 0.500000 0.000000 -0.500000 o moreblocks_slope_cut
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.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 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.500000 -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 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vt 0.0000 0.5000 vt 1.000000 1.000000
vn 0.0000 0.0000 -1.0000 vt 0.000000 0.500000
s 1 vt 1.000000 0.500000
f 20/20/6 22/21/6 21/22/6 vt 0.000000 1.000000
vt 0.500000 0.000000
vt 0.500000 2.000000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
vn -0.408200 0.816500 -0.408200
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 0.000000
usemtl None
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 2/1/2 5/2/2 6/5/2 3/6/2
f 2/3/3 1/6/3 7/1/3 5/2/3
f 7/7/4 4/3/4 3/8/4 6/6/4
f 5/1/5 7/2/5 6/4/5
f 7/1/6 1/2/6 4/5/6

74
models/moreblocks_slope_half.obj Normal file → Executable file
View File

@ -1,56 +1,28 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 -0.000000 0.500000 # www.blender.org
v -0.500000 -0.000000 0.500000 mtllib moreblocks_slope_half.mtl
v -0.500000 -0.500000 -0.500000 o Cube_Cube.002
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.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 v 0.500000 -0.500000 0.500000
vt 1.0000 0.5000 v -0.500000 -0.500000 -0.500000
vt 0.0000 0.5000 v 0.500000 -0.500000 -0.500000
vt 0.0000 0.0000 vt 1.000000 0.500000
vt 1.0000 0.0000 vt 0.000000 0.500000
vn 0.0000 -0.0000 1.0000 vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.894400 -0.447200
usemtl None
s off s off
f 15/15/5 16/16/5 17/17/5 18/18/5 f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/3/2 3/4/2 5/5/2 6/6/2
f 2/1/3 5/3/3 3/4/3
f 1/2/4 4/3/4 6/4/4
f 2/5/5 1/6/5 6/3/5 5/4/5

86
models/moreblocks_slope_half_raised.obj Normal file → Executable file
View File

@ -1,72 +1,32 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v -0.500000 0.500000 0.500000 # www.blender.org
v -0.500000 0.000000 -0.500000 mtllib moreblocks_slope_half_raised.mtl
v 0.500000 0.000000 -0.500000 o Cube.001
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.500000 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
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.000000 -0.500000
v 0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 0.500000 v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000
vt 1.0000 0.5000 vt 1.000000 1.000000
vt 0.0000 1.0000 vt 0.000000 0.500000
vt 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vn 1.0000 0.0000 0.0000 vt 1.000000 0.500000
vt 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 0.894400 -0.447200
usemtl None.001
s off s off
f 13/13/4 15/14/4 16/15/4 14/16/4 f 1/1/1 2/2/1 3/3/1 4/4/1
g back f 2/5/2 5/2/2 6/3/2 3/4/2
v -0.500000 0.500000 0.500000 f 5/5/3 7/6/3 8/3/3 6/4/3
v -0.500000 -0.500000 0.500000 f 7/1/4 1/6/4 4/3/4 8/4/4
v 0.500000 0.500000 0.500000 f 4/4/5 3/1/5 6/6/5 8/3/5
v 0.500000 -0.500000 0.500000 f 2/4/6 1/1/6 7/6/6 5/3/6
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

102
models/moreblocks_slope_inner.obj Normal file → Executable file
View File

@ -1,81 +1,35 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 -0.500000 # www.blender.org
v 0.500000 0.500000 0.500000 mtllib moreblocks_slope_inner.mtl
v -0.500000 0.500000 0.500000 o Cube_Cube.000
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 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
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.000000 1.000000
vt 1.0000 0.0000 vt 0.000000 1.000000
vt 1.0000 1.0000 vt 0.000000 0.000000
vt 0.0000 1.0000 vt 1.000000 0.000000
vn 0.0000 -0.0000 1.0000 vn 1.000000 0.000000 0.000000
s 1 vn -1.000000 0.000000 0.000000
f 22/18/6 20/19/6 19/20/6 21/21/6 vn 0.000000 0.707100 -0.707100
l 22 23 vn 0.000000 0.000000 -1.000000
l 19 23 vn 0.000000 -1.000000 -0.000000
g front vn 0.000000 -0.000000 1.000000
v 0.500000 0.500000 -0.500000 vn -0.707100 0.707100 0.000000
v 0.500000 -0.500000 -0.500000 usemtl None
v -0.500000 -0.500000 -0.500000 s off
v -0.500000 -0.500000 -0.500000 f 1/1/1 2/2/1 3/3/1 4/4/1
vt 0.0000 1.0000 f 5/1/2 6/3/2 7/4/2
vt 0.0000 0.0000 f 5/1/3 2/2/3 6/4/3
vt 1.0000 0.0000 f 1/2/4 4/3/4 8/4/4
vn 0.0000 0.0000 -1.0000 f 8/1/5 4/2/5 3/3/5 7/4/5
s 1 f 7/3/6 3/4/6 2/1/6 5/2/6
f 24/22/7 25/23/7 27/24/7 f 2/1/7 1/2/7 8/3/7
l 7 9
l 2 9

90
models/moreblocks_slope_inner_cut.obj Normal file → Executable file
View File

@ -1,72 +1,32 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 -0.500000 # www.blender.org
v 0.500000 0.500000 0.500000 mtllib moreblocks_slope_inner_cut.mtl
v -0.500000 0.500000 0.500000 o moreblocks_slope_inner_cut
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
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
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 v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vt 0.0000 1.0000 vt 1.000000 1.000000
vn 0.0000 0.0000 -1.0000 vt 0.000000 1.000000
s 1 vt 0.500000 0.000000
f 20/22/7 22/23/7 21/24/7 vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -0.577400 0.577400 -0.577400
usemtl None
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 1/2/2 4/3/2 6/4/2
f 2/1/3 1/2/3 5/3/3 7/4/3
f 6/1/4 4/2/4 3/3/4
f 7/1/5 5/2/5 6/3/5
f 2/1/6 7/2/6 3/4/6
f 7/5/7 6/3/7 3/4/7

92
models/moreblocks_slope_inner_cut_half.obj Normal file → Executable file
View File

@ -1,72 +1,34 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.000000 -0.500000 # www.blender.org
v 0.500000 -0.000000 0.500000 mtllib moreblocks_slope_inner_cut_half.mtl
v -0.500000 -0.000000 0.500000 o moreblocks_slope_inner_cut_half
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.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.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.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 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 v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vt 0.0000 0.5000 vt 1.000000 0.500000
vn 0.0000 0.0000 -1.0000 vt 0.000000 0.500000
s 1 vt 1.000000 1.000000
f 20/22/7 22/23/7 21/24/7 vt 0.000000 1.000000
vt 0.500000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -0.408200 0.816500 -0.408200
usemtl None
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 1/2/2 4/3/2 6/4/2
f 2/1/3 1/2/3 5/5/3 7/6/3
f 6/1/4 4/2/4 3/5/4
f 7/1/5 5/2/5 6/3/5
f 2/1/6 7/2/6 3/4/6
f 7/7/7 6/5/7 3/6/7

95
models/moreblocks_slope_inner_cut_half_raised.obj Normal file → Executable file
View File

@ -1,76 +1,35 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 -0.500000 # www.blender.org
v 0.500000 0.500000 0.500000 mtllib moreblocks_slope_inner_cut_half_raised.mtl
v -0.500000 0.500000 0.500000 o moreblocks_slope_inner_cut_half_raised
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
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
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.500000 -0.500000
v -0.500000 0.000000 -0.500000 v -0.500000 0.000000 -0.500000
vt 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vt 1.0000 0.5000 vt 1.000000 1.000000
vt 0.0000 1.0000 vt 0.000000 1.000000
vn -0.0000 0.0000 -1.0000 vt 0.000000 0.500000
s 1 vt 1.000000 0.500000
f 21/23/7 23/24/7 24/25/7 22/26/7 vt 0.500000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -0.000000 0.000000 -1.000000
vn -0.408200 0.816500 -0.408200
usemtl None
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 1/2/2 4/3/2 6/4/2
f 2/1/3 1/2/3 5/3/3 7/4/3
f 6/1/4 4/2/4 3/3/4
f 7/1/5 5/2/5 6/3/5 8/5/5
f 2/1/6 7/2/6 8/6/6 3/4/6
f 8/7/7 6/3/7 3/4/7

104
models/moreblocks_slope_inner_half.obj Normal file → Executable file
View File

@ -1,85 +1,35 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.000000 -0.500000 # www.blender.org
v 0.500000 -0.000000 0.500000 mtllib moreblocks_slope_inner_half.mtl
v -0.500000 -0.000000 0.500000 o Cube_Cube.001
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.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 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.000000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000
vt 0.0000 0.0000 vt 1.000000 1.000000
vt 1.0000 0.0000 vt 0.000000 1.000000
vt 1.0000 1.0000 vt 0.000000 0.000000
vt 0.0000 1.0000 vt 1.000000 0.000000
vn 0.0000 -0.0000 1.0000 vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.894400 -0.447200
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 -0.000000 1.000000
vn -0.447200 0.894400 0.000000
usemtl None.002
s off s off
f 24/18/6 22/19/6 21/20/6 23/21/6 f 1/1/1 2/2/1 3/3/1 4/4/1
l 25 24 f 5/1/2 6/3/2 7/4/2
l 25 21 f 5/1/3 2/2/3 6/4/3
g front f 1/2/4 4/3/4 8/4/4
v 0.500000 0.000000 -0.500000 f 8/1/5 4/2/5 3/3/5 7/4/5
v 0.500000 -0.500000 -0.500000 f 7/3/6 3/4/6 2/1/6 5/2/6
v -0.500000 -0.500000 -0.500000 f 2/1/7 1/2/7 8/3/7
v -0.500000 -0.500000 -0.500000 l 7 9
vt 0.0000 1.0000 l 2 9
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

102
models/moreblocks_slope_inner_half_raised.obj Normal file → Executable file
View File

@ -1,86 +1,38 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_half_raised.mtl
o Cube_Cube.003
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.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
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.500000 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
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.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.000000 1.000000
v 0.500000 -0.500000 0.500000 vt 0.000000 1.000000
vt 1.0000 1.0000 vt 0.000000 0.000000
vt 0.0000 1.0000 vt 1.000000 0.000000
vt 0.0000 0.0000 vt 1.000000 0.500000
vt 1.0000 0.0000 vt 0.000000 0.500000
vn 1.0000 0.0000 0.0000 vn 1.000000 0.000000 0.000000
vn 0.000000 0.894400 -0.447200
vn 0.000000 -0.000000 1.000000
vn -0.447200 0.894400 0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 0.000000
usemtl None.003
s off s off
f 16/14/5 17/15/5 18/16/5 19/17/5 f 1/1/1 2/2/1 3/3/1 4/4/1
l 20 17 f 5/1/2 2/2/2 6/4/2
g back f 7/3/3 3/4/3 2/1/3 5/2/3
v 0.500000 0.500000 0.500000 f 2/2/4 1/3/4 8/4/4
v 0.500000 -0.500000 0.500000 f 7/1/5 9/2/5 4/3/5 3/4/5
v -0.500000 0.500000 0.500000 f 6/5/6 1/2/6 4/3/6 9/4/6
v -0.500000 -0.500000 0.500000 f 7/4/7 5/1/7 6/6/7 9/3/7
v 0.500000 -0.500000 0.500000 l 2 10
vt 0.0000 0.0000 l 7 10
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

61
models/moreblocks_slope_outer.obj Normal file → Executable file
View File

@ -1,48 +1,25 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v -0.500000 -0.500000 0.500000 # www.blender.org
v -0.500000 -0.500000 -0.500000 mtllib moreblocks_slope_outer.mtl
v 0.500000 -0.500000 -0.500000 o Cube_Cube.004
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
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 v 0.500000 0.500000 0.500000
vt 0.0000 0.0000 vt 1.000000 1.000000
vt 1.0000 0.0000 vt 0.000000 1.000000
vt 1.0000 1.0000 vt 0.000000 0.000000
vn 0.0000 -0.0000 1.0000 vt 1.000000 0.000000
vn 0.000000 -1.000000 -0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn -0.707100 0.707100 0.000000
vn 0.000000 0.707100 -0.707100
usemtl None
s off s off
f 10/11/4 9/12/4 11/13/4 f 1/1/1 2/2/1 3/3/1 4/4/1
g left f 5/2/2 1/3/2 4/4/2
v 0.500000 -0.500000 0.500000 f 2/3/3 1/4/3 5/1/3
v 0.500000 -0.500000 -0.500000 f 5/1/4 3/3/4 2/4/4
v 0.500000 0.500000 0.500000 f 5/2/5 4/3/5 3/4/5
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

53
models/moreblocks_slope_outer_cut.obj Normal file → Executable file
View File

@ -1,40 +1,23 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 0.500000 0.500000 # www.blender.org
v -0.500000 -0.500000 0.500000 mtllib moreblocks_slope_outer_cut.mtl
v 0.500000 -0.500000 -0.500000 o Cube.002
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 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 v 0.500000 -0.500000 -0.500000
vt 1.0000 0.0000 vt 1.000000 1.000000
vt 0.0000 1.0000 vt 0.000000 0.000000
vt 0.0000 0.0000 vt 1.000000 0.000000
vn 1.0000 0.0000 0.0000 vt 0.000000 1.000000
vt 0.500000 1.000000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn -0.577400 0.577400 -0.577400
usemtl None.004
s off s off
f 12/10/4 10/11/4 11/12/4 f 1/1/1 2/2/1 3/3/1
f 4/3/2 1/4/2 3/2/2
f 3/2/3 2/3/3 4/4/3
f 2/3/4 1/5/4 4/2/4

54
models/moreblocks_slope_outer_cut_half.obj Normal file → Executable file
View File

@ -1,40 +1,24 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v 0.500000 -0.000000 0.500000 # www.blender.org
v -0.500000 -0.500000 0.500000 mtllib moreblocks_slope_outer_cut_half.mtl
v 0.500000 -0.500000 -0.500000 o Cube.003
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.000000 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 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 v 0.500000 -0.500000 -0.500000
vt 1.0000 0.0000 vt 1.000000 0.500000
vt 0.0000 0.5000 vt 0.000000 0.000000
vt 0.0000 0.0000 vt 1.000000 0.000000
vn 1.0000 0.0000 0.0000 vt 0.000000 0.500000
vt 0.000000 1.000000
vt 0.500000 1.000000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn -0.408200 0.816500 -0.408200
usemtl None.005
s off s off
f 12/10/4 10/11/4 11/12/4 f 1/1/1 2/2/1 3/3/1
f 4/3/2 1/4/2 3/2/2
f 3/2/3 2/3/3 4/5/3
f 2/3/4 1/6/4 4/2/4

74
models/moreblocks_slope_outer_cut_half_raised.obj Normal file → Executable file
View File

@ -1,56 +1,28 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v -0.500000 -0.000000 0.500000 # www.blender.org
v 0.500000 0.500000 0.500000 mtllib moreblocks_slope_outer_cut_half_raised.mtl
v 0.500000 0.000000 -0.500000 o Cube_Cube.005
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.000000 0.500000
v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000 v 0.500000 0.500000 0.500000
vt 0.0000 0.5000 v 0.500000 -0.500000 -0.500000
vt 0.0000 0.0000 v 0.500000 0.000000 -0.500000
vt 1.0000 0.0000 vt 0.000000 0.500000
vt 1.0000 1.0000 vt 0.000000 0.000000
vn -0.0000 -0.0000 1.0000 vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.500000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn -0.408200 0.816500 -0.408200
vn -0.707100 0.000000 -0.707100
usemtl None.006
s off s off
f 15/15/5 16/16/5 17/17/5 18/18/5 f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/5/2 3/2/2 5/3/2 6/6/2
f 2/5/3 5/3/3 3/4/3
f 1/2/4 4/3/4 6/4/4
f 2/3/5 1/6/5 6/1/5 5/2/5

63
models/moreblocks_slope_outer_half.obj Normal file → Executable file
View File

@ -1,48 +1,27 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v -0.500000 -0.500000 0.500000 # www.blender.org
v -0.500000 -0.500000 -0.500000 mtllib moreblocks_slope_outer_half.mtl
v 0.500000 -0.500000 -0.500000 o Cube.004
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
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 v 0.500000 -0.000000 0.500000
vt 1.0000 0.5000 vt 1.000000 1.000000
vt 0.0000 0.0000 vt 0.000000 1.000000
vt 1.0000 0.0000 vt 0.000000 0.000000
vn 0.0000 -0.0000 1.0000 vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.894400 -0.447200
vn -0.447200 0.894400 0.000000
usemtl None.007
s off s off
f 11/11/4 9/12/4 10/13/4 f 1/1/1 2/2/1 3/3/1 4/4/1
g left f 5/5/2 1/3/2 4/4/2
v 0.500000 -0.500000 -0.500000 f 3/4/3 5/6/3 4/3/3
v 0.500000 -0.500000 0.500000 f 2/4/4 5/2/4 3/3/4
v 0.500000 -0.000000 0.500000 f 1/4/5 5/1/5 2/3/5
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

90
models/moreblocks_slope_outer_half_raised.obj Normal file → Executable file
View File

@ -1,74 +1,34 @@
g top # Blender v2.72 (sub 0) OBJ File: ''
v -0.500000 -0.000000 0.500000 # www.blender.org
v 0.500000 0.500000 0.500000 mtllib moreblocks_slope_outer_half_raised.mtl
v 0.500000 0.000000 -0.500000 o Cube_Cube.006
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.000000 0.500000
v -0.500000 -0.500000 0.500000 v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000 v 0.500000 0.500000 0.500000
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.500000 -0.500000
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.000000 -0.500000
v -0.500000 -0.500000 -0.500000 v -0.500000 -0.500000 -0.500000
vt 0.0000 0.5000 vt 0.000000 0.500000
vt 0.0000 0.0000 vt 0.000000 0.000000
vt 1.0000 0.0000 vt 1.000000 0.000000
vt 1.0000 0.5000 vt 1.000000 1.000000
vn 0.0000 0.0000 -1.0000 vt 0.000000 1.000000
vt 1.000000 0.500000
vn 0.000000 -0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.894400 -0.447200
vn -1.000000 0.000000 0.000000
vn -0.447200 0.894400 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 -0.000000
usemtl None.008
s off s off
f 22/21/7 21/22/7 24/23/7 23/24/7 f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/5/2 3/2/2 5/3/2 6/6/2
f 7/3/3 4/5/3 6/2/3
f 1/6/4 7/1/4 8/2/4 2/3/4
f 7/3/5 1/4/5 4/5/5
f 6/1/6 5/2/6 8/3/6 7/6/6
f 5/5/7 3/2/7 2/3/7 8/4/7

301
nodes.lua Normal file → Executable file
View File

@ -1,49 +1,26 @@
--[[ --[[
More Blocks: node definitions More Blocks: node definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.S local S = moreblocks.intllib
local sound_dirt = default.node_sound_dirt_defaults()
local sound_wood = default.node_sound_wood_defaults() local sound_wood = default.node_sound_wood_defaults()
local sound_stone = default.node_sound_stone_defaults() local sound_stone = default.node_sound_stone_defaults()
local sound_glass = default.node_sound_glass_defaults() local sound_glass = default.node_sound_glass_defaults()
local sound_leaves = default.node_sound_leaves_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 function tile_tiles(name)
local tex = "moreblocks_" ..name.. ".png" local tex = "moreblocks_" ..name.. ".png"
return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"} return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"}
end end
local function wood_tile_replace(itemstack, placer, pointed_thing)
local substack
if itemstack:get_name() == "moreblocks:wood_tile_flipped" then
substack = ItemStack("moreblocks:wood_tile")
else -- right, left, and down variants
substack = ItemStack("moreblocks:wood_tile_offset")
end
local _, success = minetest.item_place(substack, placer, pointed_thing)
if success then
itemstack:take_item()
end
return itemstack
end
local deprecated = (" (%s)"):format(S('Deprecated'))
local nodes = { local nodes = {
["wood_tile"] = { ["wood_tile"] = {
description = S("Wooden Tile"), description = S("Wooden Tile"),
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_wood.png^moreblocks_wood_tile.png", 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",
@ -53,179 +30,145 @@ local nodes = {
sounds = sound_wood, sounds = sound_wood,
}, },
["wood_tile_flipped"] = { ["wood_tile_flipped"] = {
description = S("Wooden Tile") .. deprecated, description = S("Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90", 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^[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",
"default_wood.png^moreblocks_wood_tile.png^[transformR180"}, "default_wood.png^moreblocks_wood_tile.png^[transformR180"},
sounds = sound_wood,
no_stairs = true, no_stairs = true,
on_place = wood_tile_replace
}, },
["wood_tile_center"] = { ["wood_tile_center"] = {
description = S("Centered Wooden Tile"), description = S("Centered Wooden Tile"),
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = {"default_wood.png^moreblocks_wood_tile_center.png"}, tiles = {"default_wood.png^moreblocks_wood_tile_center.png"},
sounds = sound_wood, sounds = sound_wood,
}, },
["wood_tile_full"] = { ["wood_tile_full"] = {
description = S("Full Wooden Tile"), description = S("Full Wooden Tile"),
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = tile_tiles("wood_tile_full"), tiles = tile_tiles("wood_tile_full"),
sounds = sound_wood, sounds = sound_wood,
}, },
["wood_tile_offset"] = { ["wood_tile_up"] = {
description = S("Offset Wooden Tile"), description = S("Upwards Wooden Tile"),
paramtype2 = "facedir", groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
place_param2 = 0, tiles = {"default_wood.png^moreblocks_wood_tile_up.png"},
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = {"default_wood.png^moreblocks_wood_tile_offset.png"},
sounds = sound_wood, sounds = sound_wood,
no_stairs = true, no_stairs = true,
}, },
["wood_tile_down"] = { ["wood_tile_down"] = {
description = S("Downwards Wooden Tile") .. deprecated, description = S("Downwards Wooden Tile"),
tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_offset.png^[transformR180"}, groups = {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, no_stairs = true,
on_place = wood_tile_replace
}, },
["wood_tile_left"] = { ["wood_tile_left"] = {
description = S("Leftwards Wooden Tile") .. deprecated, description = S("Leftwards Wooden Tile"),
tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_offset.png^[transformR270"}, groups = {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, no_stairs = true,
on_place = wood_tile_replace
}, },
["wood_tile_right"] = { ["wood_tile_right"] = {
description = S("Rightwards Wooden Tile") .. deprecated, description = S("Rightwards Wooden Tile"),
tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_offset.png^[transformR90"}, groups = {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, no_stairs = true,
on_place = wood_tile_replace
}, },
["circle_stone_bricks"] = { ["circle_stone_bricks"] = {
description = S("Circle Stone Bricks"), description = S("Circle Stone Bricks"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["grey_bricks"] = { ["grey_bricks"] = {
description = S("Stone Bricks"), description = S("Stone Bricks"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["coal_stone_bricks"] = { ["coal_stone_bricks"] = {
description = S("Coal Stone Bricks"), description = S("Coal Stone Bricks"),
paramtype2 = "facedir", groups = {cracky = 3},
place_param2 = 0,
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["iron_stone_bricks"] = { ["iron_stone_bricks"] = {
description = S("Iron Stone Bricks"), description = S("Iron Stone Bricks"),
paramtype2 = "facedir", groups = {cracky = 3},
place_param2 = 0,
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["stone_tile"] = { ["stone_tile"] = {
description = S("Stone Tile"), description = S("Stone Tile"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["split_stone_tile"] = { ["split_stone_tile"] = {
description = S("Split Stone Tile"), description = S("Split Stone Tile"),
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"moreblocks_split_stone_tile_top.png", tiles = {"moreblocks_split_stone_tile_top.png",
"moreblocks_split_stone_tile.png"}, "moreblocks_split_stone_tile.png"},
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["checker_stone_tile"] = { ["split_stone_tile_alt"] = {
description = S("Checker Stone Tile"), description = S("Checkered Stone Tile"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["tar"] = { ["tar"] = {
description = S("Tar"), description = S("Tar"),
groups = {cracky=2, tar_block=1}, groups = {cracky = 2, tar_block = 1},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["dirt_compressed"] = {
description = S("Compressed Dirt"),
groups = {crumbly=2},
is_ground_content = false,
sounds = sound_dirt,
},
["cobble_compressed"] = { ["cobble_compressed"] = {
description = S("Compressed Cobblestone"), description = S("Compressed Cobblestone"),
groups = {cracky = 1}, groups = {cracky = 1},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["plankstone"] = { ["plankstone"] = {
description = S("Plankstone"), description = S("Plankstone"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
tiles = tile_tiles("plankstone"), tiles = tile_tiles("plankstone"),
sounds = sound_stone, sounds = sound_stone,
}, },
["iron_glass"] = { ["iron_glass"] = {
description = S("Iron Glass"), description = S("Iron Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#DEDEDE", "default_glass_detail.png^[colorize:#DEDEDE"}, tiles = {"moreblocks_iron_glass.png", "moreblocks_iron_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
}, },
["coal_glass"] = { ["coal_glass"] = {
description = S("Coal Glass"), description = S("Coal Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#828282", "default_glass_detail.png^[colorize:#828282"}, tiles = {"moreblocks_coal_glass.png", "moreblocks_coal_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
}, },
["clean_glass"] = { ["clean_glass"] = {
description = S("Clean Glass"), description = S("Clean Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"}, tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
}, },
["cactus_brick"] = { ["cactus_brick"] = {
description = S("Cactus Brick"), description = S("Cactus Brick"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["cactus_checker"] = { ["cactus_checker"] = {
description = S("Cactus Checker"), description = S("Cactus Checker"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
tiles = {"default_stone.png^moreblocks_cactus_checker.png", 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",
@ -234,27 +177,22 @@ local nodes = {
"default_stone.png^moreblocks_cactus_checker.png^[transformR90"}, "default_stone.png^moreblocks_cactus_checker.png^[transformR90"},
sounds = sound_stone, sounds = sound_stone,
}, },
["empty_shelf"] = { ["empty_bookshelf"] = {
description = S("Empty Shelf"), description = S("Empty Bookshelf"),
paramtype2 = "facedir", tiles = {"default_wood.png", "default_wood.png",
tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "moreblocks_empty_bookshelf.png"},
"default_wood.png", "moreblocks_empty_shelf.png", "moreblocks_empty_shelf.png"}, groups = {snappy = 2, choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
sounds = sound_wood, sounds = sound_wood,
furnace_burntime = 15,
no_stairs = true, no_stairs = true,
}, },
["coal_stone"] = { ["coal_stone"] = {
description = S("Coal Stone"), description = S("Coal Stone"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["iron_stone"] = { ["iron_stone"] = {
description = S("Iron Stone"), description = S("Iron Stone"),
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["coal_checker"] = { ["coal_checker"] = {
@ -265,8 +203,7 @@ local nodes = {
"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",
"default_stone.png^moreblocks_coal_checker.png^[transformR90"}, "default_stone.png^moreblocks_coal_checker.png^[transformR90"},
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["iron_checker"] = { ["iron_checker"] = {
@ -277,158 +214,95 @@ local nodes = {
"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",
"default_stone.png^moreblocks_iron_checker.png^[transformR90"}, "default_stone.png^moreblocks_iron_checker.png^[transformR90"},
groups = {stone = 1, cracky = 3}, groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
}, },
["trap_stone"] = { ["trap_stone"] = {
description = S("Trap Stone"), description = S("Trap Stone"),
drawtype = "glasslike_framed",
tiles = {"default_stone.png^moreblocks_trap_box.png"},
walkable = false, walkable = false,
groups = {cracky = 3}, groups = {cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["trap_desert_stone"] = {
description = S("Trap Desert Stone"),
drawtype = "glasslike_framed",
tiles = {"default_desert_stone.png^moreblocks_trap_box.png"},
walkable = false,
groups = {cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone, sounds = sound_stone,
no_stairs = true, no_stairs = true,
}, },
["trap_glass"] = { ["trap_glass"] = {
description = S("Trap Glass"), description = S("Trap Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^moreblocks_trap_box_glass.png", "default_glass_detail.png"}, tiles = {"moreblocks_trap_glass.png", "default_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
walkable = false, walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
no_stairs = true, no_stairs = true,
}, },
["trap_obsidian_glass"] = {
description = S("Trap Obsidian Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"default_obsidian_glass.png^moreblocks_trap_box_glass.png", "default_obsidian_glass_detail.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["trap_obsidian"] = {
description = S("Trap Obsidian"),
drawtype = "glasslike_framed",
tiles = {"default_obsidian.png^moreblocks_trap_box.png"},
walkable = false,
groups = {cracky = 1, level = 2},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["trap_sandstone"] = {
description = S("Trap Sandstone"),
drawtype = "glasslike_framed",
tiles = {"default_sandstone.png^moreblocks_trap_box.png"},
walkable = false,
groups = {crumbly = 1, cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["all_faces_tree"] = { ["all_faces_tree"] = {
description = S("All-faces Tree"), description = S("All-faces Tree"),
tiles = {"default_tree_top.png"}, tiles = {"default_tree_top.png"},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood, sounds = sound_wood,
furnace_burntime = 30, furnace_burntime = 30,
}, },
["all_faces_jungle_tree"] = { ["all_faces_jungle_tree"] = {
description = S("All-faces Jungle Tree"), description = S("All-faces Jungle Tree"),
tiles = {"default_jungletree_top.png"}, tiles = {"default_jungletree_top.png"},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood, sounds = sound_wood,
furnace_burntime = 38, furnace_burntime = 30,
}, },
["all_faces_pine_tree"] = { ["horizontal_jungle_tree"] = {
description = S("All-faces Pine Tree"), description = S("Horizontal Jungle Tree"),
tiles = {"default_pine_tree_top.png"}, tiles = {"default_jungletree.png",
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, "default_jungletree.png",
"default_jungletree.png^[transformR90",
"default_jungletree.png^[transformR90",
"default_jungletree_top.png",
"default_jungletree_top.png"},
paramtype2 = "facedir",
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = sound_wood, sounds = sound_wood,
furnace_burntime = 26, furnace_burntime = 30,
},
["all_faces_acacia_tree"] = {
description = S("All-faces Acacia Tree"),
tiles = {"default_acacia_tree_top.png"},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood,
furnace_burntime = 34,
},
["all_faces_aspen_tree"] = {
description = S("All-faces Aspen Tree"),
tiles = {"default_aspen_tree_top.png"},
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
sounds = sound_wood,
furnace_burntime = 22,
}, },
["glow_glass"] = { ["glow_glass"] = {
description = S("Glow Glass"), description = S("Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#E9CD61", "default_glass_detail.png^[colorize:#E9CD61"}, tiles = {"moreblocks_glow_glass.png", "moreblocks_glow_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
light_source = 11, light_source = 11,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
}, },
["trap_glow_glass"] = { ["trap_glow_glass"] = {
description = S("Trap Glow Glass"), description = S("Trap Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#E9CD61"}, tiles = {"moreblocks_trap_glass.png", "moreblocks_glow_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
light_source = 11, light_source = 11,
walkable = false, walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
no_stairs = true, no_stairs = true,
}, },
["super_glow_glass"] = { ["super_glow_glass"] = {
description = S("Super Glow Glass"), description = S("Super Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#FFFF78", "default_glass_detail.png^[colorize:#FFFF78"}, tiles = {"moreblocks_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
light_source = default.LIGHT_MAX, light_source = default.LIGHT_MAX,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
}, },
["trap_super_glow_glass"] = { ["trap_super_glow_glass"] = {
description = S("Trap Super Glow Glass"), description = S("Trap Super Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#FFFF78"}, tiles = {"moreblocks_trap_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"}, --MFF connected glass
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
light_source = default.LIGHT_MAX, light_source = default.LIGHT_MAX,
walkable = false, walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass, sounds = sound_glass,
no_stairs = true, no_stairs = true,
}, },
@ -439,7 +313,6 @@ local nodes = {
wield_image = "moreblocks_rope.png", wield_image = "moreblocks_rope.png",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
walkable = false, walkable = false,
climbable = true, climbable = true,
@ -448,33 +321,12 @@ local nodes = {
sounds = sound_leaves, sounds = sound_leaves,
no_stairs = true, no_stairs = true,
}, },
["copperpatina"] = {
description = S("Copper Patina Block"),
groups = {cracky = 1, level = 2},
is_ground_content = false,
sounds = sound_metal,
},
} }
for name, def in pairs(nodes) do for name, def in pairs(nodes) do
def.tiles = def.tiles or {"moreblocks_" ..name.. ".png"} def.tiles = def.tiles or {"moreblocks_" ..name.. ".png"}
minetest.register_node("moreblocks:" ..name, def) minetest.register_node("moreblocks:" ..name, def)
minetest.register_alias(name, "moreblocks:" ..name) minetest.register_alias(name, "moreblocks:" ..name)
def_copy = table.copy(def)
-- Use the primary tile for all sides of cut glasslike nodes.
-- This makes them easier to see
if
#def_copy.tiles > 1 and
def_copy.drawtype and
def_copy.drawtype == "glasslike_framed" or
def_copy.drawtype == "glasslike_framed_optional"
then
def.tiles = {def_copy.tiles[1]}
end
if not def.no_stairs then if not def.no_stairs then
local groups = {} local groups = {}
for k, v in pairs(def.groups) do groups[k] = v end for k, v in pairs(def.groups) do groups[k] = v end
@ -489,9 +341,16 @@ for name, def in pairs(nodes) do
end end
end end
-- Items -- Items
minetest.register_craftitem("moreblocks:sweeper", { minetest.register_craftitem("moreblocks:sweeper", {
description = S("Sweeper"), description = S("Sweeper"),
inventory_image = "moreblocks_sweeper.png", inventory_image = "moreblocks_sweeper.png",
}) })
minetest.register_craftitem("moreblocks:nothing", {
inventory_image = "invisible.png",
on_use = function() end,
})

10
ownership.lua Normal file → Executable file
View File

@ -1,11 +1,11 @@
--[[ --[[
More Blocks: ownership handling More Blocks: ownership handling
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.S local S = moreblocks.gettext
function moreblocks.node_is_owned(pos, placer) function moreblocks.node_is_owned(pos, placer)
local ownername = false local ownername = false
@ -22,18 +22,18 @@ function moreblocks.node_is_owned(pos, placer)
end end
end end
elseif type(isprotect)=="function" then -- glomie's protection mod elseif type(isprotect)=="function" then -- glomie's protection mod
if not isprotect(5, pos, placer) then if not isprotect(5, pos, placer) then
ownername = S("someone") ownername = S("someone")
end end
elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
if not protector.can_dig(5, pos, placer) then if not protector.can_dig(5, pos, placer) then
ownername = S("someone") ownername = S("someone")
end end
end end
if ownername ~= false then if ownername ~= false then
minetest.chat_send_player( placer:get_player_name(), S("Sorry, @1 owns that spot.", ownername) ) minetest.chat_send_player( placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) )
return true return true
else else
return false return false

72
redefinitions.lua Normal file → Executable file
View File

@ -1,7 +1,7 @@
--[[ --[[
More Blocks: redefinitions of default stuff More Blocks: redefinitions of default stuff
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
@ -10,9 +10,9 @@ Licensed under the zlib license. See LICENSE.md for more information.
minetest.register_craft({ minetest.register_craft({
output = "default:sign_wall 4", output = "default:sign_wall 4",
recipe = { recipe = {
{"default:wood", "default:wood", "default:wood"}, {"group:wood", "group:wood", "group:wood"},
{"default:wood", "default:wood", "default:wood"}, {"group:wood", "group:wood", "group:wood"},
{"", "default:stick", ""}, {"", "group:stick", ""},
} }
}) })
@ -25,11 +25,6 @@ minetest.register_craft({
} }
}) })
minetest.clear_craft({
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"}
}
})
minetest.register_craft({ minetest.register_craft({
output = "default:paper 4", output = "default:paper 4",
recipe = { recipe = {
@ -37,16 +32,69 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({ --[[minetest.register_craft({
output = "default:rail 24", output = "default:rail 16", -- /MFF (Mg|06/10/15) => (Ombridride|26/07/15)
recipe = { recipe = {
{"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "", "default:steel_ingot"},
{"default:steel_ingot", "default:stick", "default:steel_ingot"}, {"default:steel_ingot", "default:stick", "default:steel_ingot"},
{"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "", "default:steel_ingot"},
} }
}) })--]]
minetest.register_craft({ minetest.register_craft({
type = "toolrepair", type = "toolrepair",
additional_wear = -0.10, -- Tool repair buff (10% bonus instead of 2%). additional_wear = -0.10, -- Tool repair buff (10% bonus instead of 2%).
}) })
-- Redefinitions of some default nodes
-- ===================================
-- Let there be light. This makes some nodes let light pass through:
minetest.override_item("default:ladder", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:sapling", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:dry_shrub", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:papyrus", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:fence_wood", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:junglegrass", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:junglesapling", {
paramtype = "light",
sunlight_propagates = true,
})
minetest.override_item("default:grass_1", {
inventory_image = "default_grass_3.png", -- Use a bigger inventory image.
wield_image = "default_grass_3.png",
paramtype = "light",
sunlight_propagates = true,
})
for i = 2, 5 do
minetest.override_item("default:grass_" ..i, {
paramtype = "light",
sunlight_propagates = true,
})
end

62
stairsplus/API.md Normal file → Executable file
View File

@ -1,4 +1,5 @@
# API documentation for Stairs+ API documentation for Stairs+
=============================
* `stairsplus:register_all(modname, subname, recipeitem, fields)` * `stairsplus:register_all(modname, subname, recipeitem, fields)`
Registers a stair, slab, panel, microblock, and any other types of Registers a stair, slab, panel, microblock, and any other types of
@ -20,63 +21,4 @@ You will probably never want to use them directly:
* `stairsplus:register_slab(modname, subname, recipeitem, fields)` * `stairsplus:register_slab(modname, subname, recipeitem, fields)`
* `stairsplus:register_panel(modname, subname, recipeitem, fields)` * `stairsplus:register_panel(modname, subname, recipeitem, fields)`
* `stairsplus:register_micro(modname, subname, recipeitem, fields)` * `stairsplus:register_micro(modname, subname, recipeitem, fields)`
* `stairsplus:register_slope(modname, subname, recipeitem, fields)`
If you only want to register a subset of stairsplus nodes,
you can use the `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)` function.
The subset table should have the following format:
```lua
local subset = {
{ "micro", "" },
{ "micro", "_1" },
{ "micro", "_2" },
{ "micro", "_4" },
{ "micro", "_12" },
{ "micro", "_14" },
{ "micro", "_15" },
{ "panel", "" },
{ "panel", "_1" },
{ "panel", "_2" },
{ "panel", "_4" },
{ "panel", "_12" },
{ "panel", "_14" },
{ "panel", "_15" },
{ "slab", "" },
{ "slab", "_quarter" },
{ "slab", "_three_quarter" },
{ "slab", "_1" },
{ "slab", "_2" },
{ "slab", "_14" },
{ "slab", "_15" },
{ "slab", "_two_sides" },
{ "slab", "_three_sides" },
{ "slab", "_three_sides_u" },
{ "slope", "" },
{ "slope", "_half" },
{ "slope", "_half_raised" },
{ "slope", "_inner" },
{ "slope", "_inner_half" },
{ "slope", "_inner_half_raised" },
{ "slope", "_inner_cut" },
{ "slope", "_inner_cut_half" },
{ "slope", "_inner_cut_half_raised" },
{ "slope", "_outer" },
{ "slope", "_outer_half" },
{ "slope", "_outer_half_raised" },
{ "slope", "_outer_cut" },
{ "slope", "_outer_cut_half" },
{ "slope", "_outer_cut_half_raised" },
{ "slope", "_cut" },
{ "stair", "" },
{ "stair", "_half" },
{ "stair", "_right_half" },
{ "stair", "_inner" },
{ "stair", "_outer" },
{ "stair", "_alt" },
{ "stair", "_alt_1" },
{ "stair", "_alt_2" },
{ "stair", "_alt_4" },
}
```
You can remove entries as needed.

2
stairsplus/aliases.lua Normal file → Executable file
View File

@ -1,7 +1,7 @@
--[[ --[[
More Blocks: alias definitions More Blocks: alias definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]

View File

@ -1,70 +0,0 @@
--[[
More Blocks: registrations
Copyright © 2011-2019 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = moreblocks.S
local descriptions = {
["micro"] = S("%s Microblock"),
["slab"] = S("%s Slab"),
["slope"] = S("%s Slope"),
["panel"] = S("%s Panel"),
["stair"] = S("%s Stairs"),
}
stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields)
local desc_base = descriptions[category]:format(fields.description)
local def = {}
if category ~= "slab" then
def = table.copy(info)
end
-- copy fields to def
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
def.paramtype = "light"
def.paramtype2 = def.paramtype2 or "facedir"
-- This makes node rotation work on placement
def.place_param2 = nil
def.on_place = minetest.rotate_node
def.groups = stairsplus:prepare_groups(fields.groups)
if category == "slab" then
if type(info) ~= "table" then
def.node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, (info/16)-0.5, 0.5},
}
def.description = ("%s (%d/16)"):format(desc_base, info)
else
def.node_box = {
type = "fixed",
fixed = info,
}
def.description = desc_base .. alternate:gsub("_", " "):gsub("(%a)(%S*)", function(a, b) return a:upper() .. b end)
end
else
def.description = desc_base
if category == "slope" then
def.drawtype = "mesh"
elseif category == "stair" and alternate == "" then
def.groups.stair = 1
end
end
if fields.drop and not (type(fields.drop) == "table") then
def.drop = modname.. ":" .. category .. "_" .. fields.drop .. alternate
end
minetest.register_node(":" ..modname.. ":" .. category .. "_" .. subname .. alternate, def)
stairsplus.register_recipes(category, alternate, modname, subname, recipeitem)
end

4
stairsplus/conversion.lua Normal file → Executable file
View File

@ -1,7 +1,7 @@
--[[ --[[
More Blocks: conversion More Blocks: conversion
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
@ -80,7 +80,6 @@ function stairsplus:register_6dfacedir_conversion(modname, material)
chance = 1, chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0 local fdir = node.param2 or 0
local nfdir
if flip_upside_down and not flip_to_wall then if flip_upside_down and not flip_to_wall then
nfdir = dirs1[fdir + 2] nfdir = dirs1[fdir + 2]
@ -137,3 +136,4 @@ function stairsplus:register_6dfacedir_conversion(modname, material)
}) })
end end
end end

View File

@ -1,97 +0,0 @@
--[[
More Blocks: microblock definitions
Copyright © 2011-2019 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
--[[
Subset table should have the following format: (You can remove entries as needed.)
local subset = {
{ "micro", "" },
{ "micro", "_1" },
{ "micro", "_2" },
{ "micro", "_4" },
{ "micro", "_12" },
{ "micro", "_14" },
{ "micro", "_15" },
{ "panel", "" },
{ "panel", "_1" },
{ "panel", "_2" },
{ "panel", "_4" },
{ "panel", "_12" },
{ "panel", "_14" },
{ "panel", "_15" },
{ "slab", "" },
{ "slab", "_quarter" },
{ "slab", "_three_quarter" },
{ "slab", "_1" },
{ "slab", "_2" },
{ "slab", "_14" },
{ "slab", "_15" },
{ "slab", "_two_sides" },
{ "slab", "_three_sides" },
{ "slab", "_three_sides_u" },
{ "slope", "" },
{ "slope", "_half" },
{ "slope", "_half_raised" },
{ "slope", "_inner" },
{ "slope", "_inner_half" },
{ "slope", "_inner_half_raised" },
{ "slope", "_inner_cut" },
{ "slope", "_inner_cut_half" },
{ "slope", "_inner_cut_half_raised" },
{ "slope", "_outer" },
{ "slope", "_outer_half" },
{ "slope", "_outer_half_raised" },
{ "slope", "_outer_cut" },
{ "slope", "_outer_cut_half" },
{ "slope", "_outer_cut_half_raised" },
{ "slope", "_cut" },
{ "stair", "" },
{ "stair", "_half" },
{ "stair", "_right_half" },
{ "stair", "_inner" },
{ "stair", "_outer" },
{ "stair", "_alt" },
{ "stair", "_alt_1" },
{ "stair", "_alt_2" },
{ "stair", "_alt_4" },
}
--]]
-- luacheck: no unused
local function register_custom_subset(subset, modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_custom_subset(subset, modname, subname, recipeitem, {
groups = groups,
tiles = images,
description = description,
drop = drop,
light_source = light,
sounds = default.node_sound_stone_defaults(),
})
end
function stairsplus:register_custom_subset_alias(subset, modname_old, subname_old, modname_new, subname_new)
local subset_copy = table.copy(subset)
for k, v in pairs(subset_copy) do
minetest.register_alias(modname_old .. ":" .. v[1] .. "_" .. subname_old .. v[2], modname_new .. ":" .. v[1] .. "_" .. subname_new .. v[2])
end
end
function stairsplus:register_custom_subset_alias_force(subset, modname_old, subname_old, modname_new, subname_new)
local subset_copy = table.copy(subset)
for k, v in pairs(subset_copy) do
minetest.register_alias_force(modname_old .. ":" .. v[1] .. "_" .. subname_old .. v[2], modname_new .. ":" .. v[1] .. "_" .. subname_new .. v[2])
end
end
function stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)
local subset_copy = table.copy(subset)
for k, v in pairs(subset_copy) do
stairsplus.register_single(v[1], v[2], stairsplus.defs[v[1]][v[2]], modname, subname, recipeitem, fields)
end
circular_saw.known_nodes[recipeitem] = {modname, subname}
end

View File

@ -1,409 +0,0 @@
--[[
More Blocks: registrations
Copyright © 2011-2019 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local box_slope = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.25, -0.25, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
}
}
local box_slope_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
{-0.5, -0.25, 0, 0.5, -0.125, 0.5},
{-0.5, -0.125, 0.25, 0.5, 0, 0.5},
}
}
local box_slope_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0, 0.5, 0.375, 0.5},
{-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
}
}
--==============================================================
local box_slope_inner = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.5, -0.25, 0.5, 0, 0.5},
{-0.5, -0.5, -0.5, 0.25, 0, 0.5},
{-0.5, 0, -0.5, 0, 0.25, 0.5},
{-0.5, 0, 0, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5},
{-0.5, 0.25, -0.5, -0.25, 0.5, 0.5},
}
}
local box_slope_inner_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
{-0.5, -0.375, -0.5, 0.25, -0.25, 0.5},
{-0.5, -0.25, -0.5, 0, -0.125, 0.5},
{-0.5, -0.25, 0, 0.5, -0.125, 0.5},
{-0.5, -0.125, 0.25, 0.5, 0, 0.5},
{-0.5, -0.125, -0.5, -0.25, 0, 0.5},
}
}
local box_slope_inner_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
{-0.5, 0.125, -0.5, 0.25, 0.25, 0.5},
{-0.5, 0.25, -0.5, 0, 0.375, 0.5},
{-0.5, 0.25, 0, 0.5, 0.375, 0.5},
{-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
{-0.5, 0.375, -0.5, -0.25, 0.5, 0.5},
}
}
--==============================================================
local box_slope_outer = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.25, -0.25, 0.25, 0, 0.5},
{-0.5, 0, 0, 0, 0.25, 0.5},
{-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
}
}
local box_slope_outer_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.25, -0.25, 0.5},
{-0.5, -0.25, 0, 0, -0.125, 0.5},
{-0.5, -0.125, 0.25, -0.25, 0, 0.5}
}
}
local box_slope_outer_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.25, 0.25, 0.5},
{-0.5, 0.25, 0, 0, 0.375, 0.5},
{-0.5, 0.375, 0.25, -0.25, 0.5, 0.5}
}
}
stairsplus.defs = {
["micro"] = {
[""] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0, 0.5},
},
},
["_1"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, -0.4375, 0.5},
},
},
["_2"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, -0.375, 0.5},
},
},
["_4"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, -0.25, 0.5},
},
},
["_12"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5},
},
},
["_14"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0.375, 0.5},
},
},
["_15"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5},
},
}
},
["panel"] = {
[""] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5},
},
},
["_1"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, -0.4375, 0.5},
},
},
["_2"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, -0.375, 0.5},
},
},
["_4"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, -0.25, 0.5},
},
},
["_12"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5},
},
},
["_14"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.375, 0.5},
},
},
["_15"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5},
},
}
},
["slab"] = {
[""] = 8,
["_quarter"] = 4,
["_three_quarter"] = 12,
["_1"] = 1,
["_2"] = 2,
["_14"] = 14,
["_15"] = 15,
["_two_sides"] = {
{ -0.5, -0.5, -0.5, 0.5, -7/16, 7/16 },
{ -0.5, -0.5, 7/16, 0.5, 0.5, 0.5 }
},
["_three_sides"] = {
{ -7/16, -0.5, -0.5, 0.5, -7/16, 7/16 },
{ -7/16, -0.5, 7/16, 0.5, 0.5, 0.5 },
{ -0.5, -0.5, -0.5, -7/16, 0.5, 0.5 }
},
["_three_sides_u"] = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, -7/16 },
{ -0.5, -0.5, -7/16, 0.5, -7/16, 7/16 },
{ -0.5, -0.5, 7/16, 0.5, 0.5, 0.5 }
}
},
["slope"] = {
[""] = {
mesh = "moreblocks_slope.obj",
collision_box = box_slope,
selection_box = box_slope,
},
["_half"] = {
mesh = "moreblocks_slope_half.obj",
collision_box = box_slope_half,
selection_box = box_slope_half,
},
["_half_raised"] = {
mesh = "moreblocks_slope_half_raised.obj",
collision_box = box_slope_half_raised,
selection_box = box_slope_half_raised,
},
--==============================================================
["_inner"] = {
mesh = "moreblocks_slope_inner.obj",
collision_box = box_slope_inner,
selection_box = box_slope_inner,
},
["_inner_half"] = {
mesh = "moreblocks_slope_inner_half.obj",
collision_box = box_slope_inner_half,
selection_box = box_slope_inner_half,
},
["_inner_half_raised"] = {
mesh = "moreblocks_slope_inner_half_raised.obj",
collision_box = box_slope_inner_half_raised,
selection_box = box_slope_inner_half_raised,
},
--==============================================================
["_inner_cut"] = {
mesh = "moreblocks_slope_inner_cut.obj",
collision_box = box_slope_inner,
selection_box = box_slope_inner,
},
["_inner_cut_half"] = {
mesh = "moreblocks_slope_inner_cut_half.obj",
collision_box = box_slope_inner_half,
selection_box = box_slope_inner_half,
},
["_inner_cut_half_raised"] = {
mesh = "moreblocks_slope_inner_cut_half_raised.obj",
collision_box = box_slope_inner_half_raised,
selection_box = box_slope_inner_half_raised,
},
--==============================================================
["_outer"] = {
mesh = "moreblocks_slope_outer.obj",
collision_box = box_slope_outer,
selection_box = box_slope_outer,
},
["_outer_half"] = {
mesh = "moreblocks_slope_outer_half.obj",
collision_box = box_slope_outer_half,
selection_box = box_slope_outer_half,
},
["_outer_half_raised"] = {
mesh = "moreblocks_slope_outer_half_raised.obj",
collision_box = box_slope_outer_half_raised,
selection_box = box_slope_outer_half_raised,
},
--==============================================================
["_outer_cut"] = {
mesh = "moreblocks_slope_outer_cut.obj",
collision_box = box_slope_outer,
selection_box = box_slope_outer,
},
["_outer_cut_half"] = {
mesh = "moreblocks_slope_outer_cut_half.obj",
collision_box = box_slope_outer_half,
selection_box = box_slope_outer_half,
},
["_outer_cut_half_raised"] = {
mesh = "moreblocks_slope_outer_cut_half_raised.obj",
collision_box = box_slope_outer_half_raised,
selection_box = box_slope_outer_half_raised,
},
["_cut"] = {
mesh = "moreblocks_slope_cut.obj",
collision_box = box_slope_outer,
selection_box = box_slope_outer,
},
},
["stair"] = {
[""] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
},
["_half"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0, 0, 0.5},
{-0.5, 0, 0, 0, 0.5, 0.5},
},
},
},
["_right_half"] = {
node_box = {
type = "fixed",
fixed = {
{0, -0.5, -0.5, 0.5, 0, 0.5},
{0, 0, 0, 0.5, 0.5, 0.5},
},
},
},
["_inner"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
{-0.5, 0, -0.5, 0, 0.5, 0},
},
},
},
["_outer"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0, 0.5, 0.5},
},
},
},
["_alt"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
},
["_alt_1"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.0625, -0.5, 0.5, 0, 0},
{-0.5, 0.4375, 0, 0.5, 0.5, 0.5},
},
},
},
["_alt_2"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.125, -0.5, 0.5, 0, 0},
{-0.5, 0.375, 0, 0.5, 0.5, 0.5},
},
},
},
["_alt_4"] = {
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.25, -0.5, 0.5, 0, 0},
{-0.5, 0.25, 0, 0.5, 0.5, 0.5},
},
},
},
},
}
for type,a in pairs(stairsplus.defs) do
for name,b in pairs(stairsplus.defs[type]) do
table.insert(stairsplus.shapes_list, { type .. "_", name })
end
end

30
stairsplus/init.lua Normal file → Executable file
View File

@ -1,21 +1,19 @@
--[[ --[[
More Blocks: Stairs+ More Blocks: Stairs+
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
-- Nodes will be called <modname>:{stair,slab,panel,micro,slope}_<subname> -- Nodes will be called <modname>:{stair,slab,panel,micro}_<subname>
local modpath = minetest.get_modpath("moreblocks").. "/stairsplus" local modpath = minetest.get_modpath("moreblocks").. "/stairsplus"
stairsplus = {} stairsplus = {}
stairsplus.expect_infinite_stacks = false stairsplus.expect_infinite_stacks = false
stairsplus.shapes_list = {}
if not minetest.get_modpath("unified_inventory") if not minetest.get_modpath("unified_inventory")
and minetest.settings:get_bool("creative_mode") then and minetest.setting_getbool("creative_mode") then
stairsplus.expect_infinite_stacks = true stairsplus.expect_infinite_stacks = true
end end
@ -43,23 +41,7 @@ function stairsplus:register_all(modname, subname, recipeitem, fields)
-- self:register_6dfacedir_conversion(modname, subname) -- Not needed as of Q3 2013, uncomment to fix old maps. -- self:register_6dfacedir_conversion(modname, subname) -- Not needed as of Q3 2013, uncomment to fix old maps.
end end
function stairsplus:register_alias_all(modname_old, subname_old, modname_new, subname_new) function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light)
self:register_stair_alias(modname_old, subname_old, modname_new, subname_new)
self:register_slab_alias(modname_old, subname_old, modname_new, subname_new)
self:register_slope_alias(modname_old, subname_old, modname_new, subname_new)
self:register_panel_alias(modname_old, subname_old, modname_new, subname_new)
self:register_micro_alias(modname_old, subname_old, modname_new, subname_new)
end
function stairsplus:register_alias_force_all(modname_old, subname_old, modname_new, subname_new)
self:register_stair_alias_force(modname_old, subname_old, modname_new, subname_new)
self:register_slab_alias_force(modname_old, subname_old, modname_new, subname_new)
self:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new)
self:register_panel_alias_force(modname_old, subname_old, modname_new, subname_new)
self:register_micro_alias_force(modname_old, subname_old, modname_new, subname_new)
end
-- luacheck: no unused
local function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_all(modname, subname, recipeitem, { stairsplus:register_all(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -71,13 +53,9 @@ end
-- dofile(modpath.. "/aliases.lua") -- Not needed as of Q2 2013, uncomment to fix old maps. -- 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.. "/conversion.lua") -- Not needed as of Q2 2013, uncomment to fix old maps.
dofile(modpath .. "/defs.lua")
dofile(modpath .. "/recipes.lua")
dofile(modpath .. "/common.lua")
dofile(modpath .. "/stairs.lua") dofile(modpath .. "/stairs.lua")
dofile(modpath .. "/slabs.lua") dofile(modpath .. "/slabs.lua")
dofile(modpath .. "/slopes.lua") dofile(modpath .. "/slopes.lua")
dofile(modpath .. "/panels.lua") dofile(modpath .. "/panels.lua")
dofile(modpath .. "/microblocks.lua") dofile(modpath .. "/microblocks.lua")
dofile(modpath .. "/custom.lua")
dofile(modpath .. "/registrations.lua") dofile(modpath .. "/registrations.lua")

123
stairsplus/microblocks.lua Normal file → Executable file
View File

@ -1,14 +1,15 @@
--[[ --[[
More Blocks: microblock definitions More Blocks: microblock definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.intllib
-- Node will be called <modname>:micro_<subname> -- Node will be called <modname>:micro_<subname>
-- luacheck: no unused function register_micro(modname, subname, recipeitem, groups, images, description, drop, light)
local function register_micro(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_micro(modname, subname, recipeitem, { stairsplus:register_micro(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -19,25 +20,109 @@ local function register_micro(modname, subname, recipeitem, groups, images, desc
}) })
end end
function stairsplus:register_micro_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["micro"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate)
end
end
function stairsplus:register_micro_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["micro"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate)
end
end
function stairsplus:register_micro(modname, subname, recipeitem, fields) function stairsplus:register_micro(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["micro"]) local 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"] = {legacy = "_1"},
["_4"] = {legacy = ""},
["_12"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5},
},
},
["_14"] = {legacy = "_15"},
["_15"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5},
},
}
}
local desc = S("%s Microblock"):format(fields.description)
for alternate, def in pairs(defs) do for alternate, def in pairs(defs) do
stairsplus.register_single("micro", alternate, def, modname, subname, recipeitem, fields) if def.legacy then
minetest.register_alias(modname .. ":micro_" .. subname .. alternate,
modname .. ":micro_" .. subname .. def.legacy)
else
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
def.paramtype = "light"
def.paramtype2 = "facedir"
def.on_place = minetest.rotate_node
def.groups = stairsplus:prepare_groups(fields.groups)
def.description = desc
if fields.drop then
def.drop = modname.. ":micro_" ..fields.drop..alternate
end
minetest.register_node(":" ..modname.. ":micro_" ..subname..alternate, def)
end
end end
minetest.register_alias(modname.. ":micro_" ..subname.. "_bottom", modname.. ":micro_" ..subname)
circular_saw.known_nodes[recipeitem] = {modname, 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 end

103
stairsplus/panels.lua Normal file → Executable file
View File

@ -1,14 +1,15 @@
--[[ --[[
More Blocks: panel definitions More Blocks: panel definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.intllib
-- Node will be called <modname>:panel_<subname> -- Node will be called <modname>:panel_<subname>
-- luacheck: no unused function register_panel(modname, subname, recipeitem, groups, images, description, drop, light)
local function register_panel(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_panel(modname, subname, recipeitem, { stairsplus:register_panel(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -19,25 +20,89 @@ local function register_panel(modname, subname, recipeitem, groups, images, desc
}) })
end end
function stairsplus:register_panel_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["panel"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate)
end
end
function stairsplus:register_panel_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["panel"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate)
end
end
function stairsplus:register_panel(modname, subname, recipeitem, fields) function stairsplus:register_panel(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["panel"]) local 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"] = {legacy = "_1"},
["_4"] = {legacy = ""},
["_12"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5},
},
},
["_14"] = {legacy = "_15"},
["_15"] = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5},
},
}
}
local desc = S("%s Panel"):format(fields.description)
for alternate, def in pairs(defs) do for alternate, def in pairs(defs) do
stairsplus.register_single("panel", alternate, def, modname, subname, recipeitem, fields) if def.legacy then
minetest.register_alias(modname .. ":panel_" .. subname .. alternate,
modname .. ":panel_" .. subname .. def.legacy)
else
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
def.paramtype = "light"
def.paramtype2 = "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
if fields.drop then
def.drop = modname.. ":panel_" ..fields.drop..alternate
end
minetest.register_node(":" ..modname.. ":panel_" ..subname..alternate, def)
end
end end
minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname)
circular_saw.known_nodes[recipeitem] = {modname, 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 end

View File

@ -1,443 +0,0 @@
--[[
More Blocks: Stairs+
Copyright © 2011-2019 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
stairsplus.register_recipes = function(category, alternate, modname, subname, recipeitem)
if category == "micro" and alternate == "" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 7",
recipe = {modname .. ":stair_" .. subname .. "_inner"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 6",
recipe = {modname .. ":stair_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 5",
recipe = {modname .. ":stair_" .. subname .. "_outer"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":stair_" .. subname .. "_alt"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 3",
recipe = {modname .. ":stair_" .. subname .. "_right_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 2",
recipe = {modname .. ":panel_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_alias(modname .. ":micro_" .. subname .. "_bottom", modname .. ":micro_" .. subname)
elseif category == "panel" and alternate == "" then
minetest.register_craft({
output = modname .. ":panel_" .. subname .. " 12",
recipe = {
{recipeitem, ""},
{recipeitem, recipeitem},
},
})
minetest.register_craft({
output = modname .. ":panel_" .. subname .. " 12",
recipe = {
{"", recipeitem},
{recipeitem, recipeitem},
},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":panel_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname)
elseif category == "slab" then
if alternate == "" then
minetest.register_craft({
output = modname .. ":slab_" .. subname .. " 6",
recipe = {{recipeitem, recipeitem, recipeitem}},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
-- uncomment this rule when conflict is no longer likely to happen
-- https://github.com/minetest/minetest/issues/2881
-- minetest.register_craft({
-- type = "shapeless",
-- output = modname .. ":slab_" .. subname,
-- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
-- })
-- then remove these two
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {{modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}},
})
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {
{modname .. ":panel_" .. subname},
{modname .. ":panel_" .. subname},
},
})
------------------------------
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. " 3",
recipe = {modname .. ":stair_" .. subname, modname .. ":stair_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"},
})
elseif alternate == "_quarter" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
elseif alternate == "_three_quarter" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
elseif alternate == "_2" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_2",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
elseif alternate == "_14" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
elseif alternate == "_15" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_15",
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"},
})
end
elseif category == "slope" then
if alternate == "" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname},
})
elseif alternate == "_half" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
})
elseif alternate == "_outer" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"},
})
elseif alternate == "_outer_half" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"},
})
elseif alternate == "_inner_half" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"},
})
elseif alternate == "_outer_cut" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"},
})
elseif alternate == "_outer_cut_half" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"},
})
elseif alternate == "_cut" then
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"},
})
elseif alternate == "_half_raised" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_half_raised",
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
modname .. ":slope_" .. subname .. "_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"},
})
elseif alternate == "_inner_half_raised" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_inner_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"},
})
elseif alternate == "_outer_half_raised" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_outer_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"},
})
elseif alternate == "_inner_cut_half_raised" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_cut_half"},
})
end
elseif category == "stair" then
if alternate == "" then
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 8",
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 8",
recipe = {
{"", "", recipeitem},
{"", recipeitem, recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
elseif alternate == "_inner" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_inner",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
elseif alternate == "_outer" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_outer",
recipe = {modname .. ":micro_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_outer",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
elseif alternate == "_half" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_half",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_half",
recipe = {modname .. ":panel_" .. subname, modname .. ":micro_" .. subname},
})
elseif alternate == "_right_half" then
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_right_half",
recipe = {modname .. ":stair_" .. subname .. "_half"},
})
elseif alternate == "_alt" then
minetest.register_craft({ -- See mirrored variation of the recipe below.
output = modname .. ":stair_" .. subname .. "_alt",
recipe = {
{modname .. ":panel_" .. subname, ""},
{"" , modname .. ":panel_" .. subname},
},
})
minetest.register_craft({ -- Mirrored variation of the recipe above.
output = modname .. ":stair_" .. subname .. "_alt",
recipe = {
{"" , modname .. ":panel_" .. subname},
{modname .. ":panel_" .. subname, ""},
},
})
end
end
end

148
stairsplus/registrations.lua Normal file → Executable file
View File

@ -1,14 +1,12 @@
--[[ --[[
More Blocks: registrations More Blocks: registrations
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
-- default registrations
local default_nodes = { -- Default stairs/slabs/panels/microblocks: local default_nodes = { -- Default stairs/slabs/panels/microblocks:
"stone", "stone",
"stone_block",
"cobble", "cobble",
"mossycobble", "mossycobble",
"brick", "brick",
@ -18,9 +16,7 @@ local default_nodes = { -- Default stairs/slabs/panels/microblocks:
"copperblock", "copperblock",
"bronzeblock", "bronzeblock",
"diamondblock", "diamondblock",
"tinblock",
"desert_stone", "desert_stone",
"desert_stone_block",
"desert_cobble", "desert_cobble",
"meselamp", "meselamp",
"glass", "glass",
@ -30,134 +26,40 @@ local default_nodes = { -- Default stairs/slabs/panels/microblocks:
"junglewood", "junglewood",
"pine_tree", "pine_tree",
"pine_wood", "pine_wood",
"cherry_tree",
"cherry_plank",
"acacia_tree", "acacia_tree",
"acacia_wood", "acacia_wood",
"aspen_tree",
"aspen_wood",
"obsidian", "obsidian",
"obsidian_block",
"obsidianbrick",
"obsidian_glass", "obsidian_glass",
"stonebrick", "stonebrick",
"desert_stonebrick", "desert_stonebrick",
"sandstonebrick", "sandstonebrick",
"silver_sandstone", "obsidianbrick",
"silver_sandstone_brick",
"silver_sandstone_block",
"desert_sandstone",
"desert_sandstone_brick",
"desert_sandstone_block",
"sandstone_block",
"coral_skeleton",
} }
for _, name in pairs(default_nodes) do for _, name in pairs(default_nodes) do
local mod = "default" local nodename = "default:" .. name
local nodename = mod .. ":" .. name local ndef = minetest.registered_nodes[nodename]
local ndef = table.copy(minetest.registered_nodes[nodename]) if ndef then
ndef.sunlight_propagates = true local drop
if type(ndef.drop) == "string" then
drop = ndef.drop:split(" ")[1]:sub(9)
end
-- Stone and desert_stone drop cobble and desert_cobble respectively. local tiles = ndef.tiles
if type(ndef.drop) == "string" then if #ndef.tiles > 1 and ndef.drawtype:find("glass") then
ndef.drop = ndef.drop:gsub(".+:", "") tiles = { ndef.tiles[1] }
end end
-- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2.
if #ndef.tiles > 1 and ndef.drawtype and ndef.drawtype:find("glass") then
ndef.tiles = {ndef.tiles[1]}
ndef.paramtype2 = nil
end
mod = "moreblocks"
stairsplus:register_all(mod, name, nodename, ndef)
minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
end
-- farming registrations
if minetest.get_modpath("farming") then
local farming_nodes = {"straw"}
for _, name in pairs(farming_nodes) do
local mod = "farming"
local nodename = mod .. ":" .. name
local ndef = table.copy(minetest.registered_nodes[nodename])
ndef.sunlight_propagates = true
mod = "moreblocks"
stairsplus:register_all(mod, name, nodename, ndef)
minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
end
end
-- wool registrations
if minetest.get_modpath("wool") then
local dyes = {"white", "grey", "black", "red", "yellow", "green", "cyan",
"blue", "magenta", "orange", "violet", "brown", "pink",
"dark_grey", "dark_green"}
for _, name in pairs(dyes) do
local mod = "wool"
local nodename = mod .. ":" .. name
local ndef = table.copy(minetest.registered_nodes[nodename])
ndef.sunlight_propagates = true
-- Prevent dye+cut wool recipy from creating a full wool block.
ndef.groups.wool = nil
stairsplus:register_all(mod, name, nodename, ndef)
end
end
-- basic_materials, keeping the original other-mod-oriented names
-- for backwards compatibility
if minetest.get_modpath("basic_materials") then
stairsplus:register_all("technic","concrete","basic_materials:concrete_block",{
description = "Concrete",
tiles = {"basic_materials_concrete_block.png",},
groups = {cracky=1, level=2, concrete=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_alias("prefab:concrete_stair","technic:stair_concrete")
minetest.register_alias("prefab:concrete_slab","technic:slab_concrete")
stairsplus:register_all("gloopblocks", "cement", "basic_materials:cement_block", {
description = "Cement",
tiles = {"basic_materials_cement_block.png"},
groups = {cracky=2, not_in_creative_inventory=1},
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
})
stairsplus:register_all("technic", "brass_block", "basic_materials:brass_block", {
description="Brass Block",
groups={cracky=1, not_in_creative_inventory=1},
tiles={"basic_materials_brass_block.png"},
})
end
-- Alias cuts of split_stone_tile_alt which was renamed checker_stone_tile.
stairsplus:register_alias_all("moreblocks", "split_stone_tile_alt", "moreblocks", "checker_stone_tile")
-- The following LBM is necessary because the name stair_split_stone_tile_alt
-- conflicts with another node and so the alias for that specific node gets
-- ignored.
minetest.register_lbm({
name = "moreblocks:fix_split_stone_tile_alt_name_collision",
nodenames = {"moreblocks:stair_split_stone_tile_alt"},
action = function(pos, node)
minetest.set_node(pos, {
name = "moreblocks:stair_checker_stone_tile",
param2 = minetest.get_node(pos).param2
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
}) })
minetest.log('action', "LBM replaced " .. node.name .. end
" at " .. minetest.pos_to_string(pos)) end
end,
})

211
stairsplus/slabs.lua Normal file → Executable file
View File

@ -1,14 +1,15 @@
--[[ --[[
More Blocks: slab definitions More Blocks: slab definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.intllib
-- Node will be called <modname>:slab_<subname> -- Node will be called <modname>:slab_<subname>
-- luacheck: no unused function register_slab(modname, subname, recipeitem, groups, images, description, drop, light)
local function register_slab(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_slab(modname, subname, recipeitem, { stairsplus:register_slab(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -19,25 +20,195 @@ local function register_slab(modname, subname, recipeitem, groups, images, descr
}) })
end end
function stairsplus:register_slab_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slab"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate)
end
end
function stairsplus:register_slab_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slab"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate)
end
end
function stairsplus:register_slab(modname, subname, recipeitem, fields) function stairsplus:register_slab(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["slab"]) local defs = {
for alternate, shape in pairs(defs) do [""] = 8,
stairsplus.register_single("slab", alternate, shape, modname, subname, recipeitem, fields) ["_quarter"] = 4,
["_three_quarter"] = 12,
["_1"] = 1,
["_2"] = "_1",
["_14"] = "_three_quarter",
["_15"] = 15,
}
local desc_base = S("%s Slab"):format(fields.description)
for alternate, num in pairs(defs) do
if type(num) == type("moo") then
minetest.register_alias(modname .. ":slab_" .. subname .. alternate,
modname .. ":slab_" .. subname .. num)
else
local def = {
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, (num/16)-0.5, 0.5},
}
}
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
def.paramtype = "light"
def.paramtype2 = "facedir"
def.on_place = minetest.rotate_node
def.description = ("%s (%d/16)"):format(desc_base, num)
def.groups = stairsplus:prepare_groups(fields.groups)
if fields.drop then
def.drop = modname.. ":slab_" .. fields.drop .. alternate
end
minetest.register_node(":" .. modname .. ":slab_" .. subname .. alternate, def)
end
end end
minetest.register_alias("stairs:slab_" .. subname, modname .. ":slab_" .. subname)
circular_saw.known_nodes[recipeitem] = {modname, 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 end

342
stairsplus/slopes.lua Normal file → Executable file
View File

@ -1,14 +1,118 @@
--[[ --[[
More Blocks: slope definitions More Blocks: slope definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. 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 <modname>:slope_<subname> -- Node will be called <modname>:slope_<subname>
-- luacheck: no unused function register_slope(modname, subname, recipeitem, groups, images, description, drop, light)
local function register_slope(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_slope(modname, subname, recipeitem, { stairsplus:register_slope(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -19,25 +123,225 @@ local function register_slope(modname, subname, recipeitem, groups, images, desc
}) })
end end
function stairsplus:register_slope_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slope"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
end
end
function stairsplus:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slope"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
end
end
function stairsplus:register_slope(modname, subname, recipeitem, fields) function stairsplus:register_slope(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["slope"]) local 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,
},
}
local desc = S("%s Slope"):format(fields.description)
for alternate, def in pairs(defs) do for alternate, def in pairs(defs) do
stairsplus.register_single("slope", alternate, def, modname, subname, recipeitem, fields) for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "mesh"
def.paramtype = "light"
def.paramtype2 = "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
if fields.drop then
def.drop = modname.. ":slope_" ..fields.drop..alternate
end
minetest.register_node(":" ..modname.. ":slope_" ..subname..alternate, def)
end end
circular_saw.known_nodes[recipeitem] = {modname, subname} 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 end

216
stairsplus/stairs.lua Normal file → Executable file
View File

@ -1,14 +1,15 @@
--[[ --[[
More Blocks: stair definitions More Blocks: stair definitions
Copyright © 2011-2019 Hugo Locurcio and contributors. Copyright (c) 2011-2015 Calinou and contributors.
Licensed under the zlib license. See LICENSE.md for more information. Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = moreblocks.intllib
-- Node will be called <modname>:stair_<subname> -- Node will be called <modname>:stair_<subname>
-- luacheck: no unused function register_stair(modname, subname, recipeitem, groups, images, description, drop, light)
local function register_stair(modname, subname, recipeitem, groups, images, description, drop, light)
stairsplus:register_stair(modname, subname, recipeitem, { stairsplus:register_stair(modname, subname, recipeitem, {
groups = groups, groups = groups,
tiles = images, tiles = images,
@ -19,25 +20,202 @@ local function register_stair(modname, subname, recipeitem, groups, images, desc
}) })
end end
function stairsplus:register_stair_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["stair"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate)
end
end
function stairsplus:register_stair_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["stair"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate)
end
end
function stairsplus:register_stair(modname, subname, recipeitem, fields) function stairsplus:register_stair(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["stair"]) local 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"] = {legacy = "_alt_1"},
["_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},
},
},
},
}
local desc = S("%s Stairs"):format(fields.description)
for alternate, def in pairs(defs) do for alternate, def in pairs(defs) do
stairsplus.register_single("stair", alternate, def, modname, subname, recipeitem, fields) if def.legacy then
minetest.register_alias(modname .. ":stair_" .. subname .. alternate,
modname .. ":stair_" .. subname .. def.legacy)
else
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
def.paramtype = "light"
def.paramtype2 = "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
if fields.drop then
def.drop = modname .. ":stair_" .. fields.drop .. alternate
end
minetest.register_node(":" .. modname .. ":stair_" .. subname .. alternate, def)
end
end end
minetest.register_alias("stairs:stair_" .. subname, modname .. ":stair_" .. subname)
circular_saw.known_nodes[recipeitem] = {modname, subname} circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 6",
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 6",
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 end

BIN
textures/invisible.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

BIN
textures/moreblocks_cactus_brick.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 B

After

Width:  |  Height:  |  Size: 718 B

BIN
textures/moreblocks_cactus_checker.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 685 B

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

BIN
textures/moreblocks_circle_stone_bricks.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 B

After

Width:  |  Height:  |  Size: 448 B

BIN
textures/moreblocks_circular_saw_bottom.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 579 B

BIN
textures/moreblocks_circular_saw_side.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 B

After

Width:  |  Height:  |  Size: 478 B

BIN
textures/moreblocks_circular_saw_top.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

After

Width:  |  Height:  |  Size: 441 B

BIN
textures/moreblocks_clean_glass.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 170 B

0
textures/moreblocks_clean_glass_detail.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 96 B

After

Width:  |  Height:  |  Size: 96 B

BIN
textures/moreblocks_coal_checker.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

BIN
textures/moreblocks_coal_glass_stairsplus.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 166 B

0
textures/moreblocks_coal_stone.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 229 B

BIN
textures/moreblocks_coal_stone_bricks.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 481 B

After

Width:  |  Height:  |  Size: 484 B

0
textures/moreblocks_cobble_compressed.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

BIN
textures/moreblocks_glass.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

BIN
textures/moreblocks_glass_stairsplus.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

0
textures/moreblocks_glow_glass_stairsplus.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 169 B

After

Width:  |  Height:  |  Size: 169 B

0
textures/moreblocks_grey_bricks.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 725 B

0
textures/moreblocks_iron_checker.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 850 B

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

0
textures/moreblocks_iron_glass_stairsplus.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 169 B

After

Width:  |  Height:  |  Size: 169 B

BIN
textures/moreblocks_iron_stone.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 230 B

BIN
textures/moreblocks_iron_stone_bricks.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 B

After

Width:  |  Height:  |  Size: 485 B

BIN
textures/moreblocks_junglestick.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 B

After

Width:  |  Height:  |  Size: 115 B

0
textures/moreblocks_obsidian_glass_stairsplus.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 144 B

After

Width:  |  Height:  |  Size: 144 B

0
textures/moreblocks_plankstone.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 335 B

After

Width:  |  Height:  |  Size: 335 B

0
textures/moreblocks_plankstone_2.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 354 B

After

Width:  |  Height:  |  Size: 354 B

0
textures/moreblocks_rope.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 356 B

BIN
textures/moreblocks_split_stone_tile.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Some files were not shown because too many files have changed in this diff Show More