78 Commits

Author SHA1 Message Date
9d953ccebf Bump to version v1.2.0 2018-11-24 17:39:42 +01:00
26f59baba0 Update copyright year range for 2018 2018-11-24 17:36:04 +01:00
0ace9fe493 Update the changelog to reflect recent commits 2018-11-24 17:34:55 +01:00
ca45478761 brass block stairs/slabs/etc (#135) 2018-11-24 17:27:16 +01:00
1482a7810f make stairs from cement too. 2018-11-24 17:06:16 +01:00
01ec8290f6 basic_materials stairs/slopes/et. al
(keeping original technic item names)
2018-11-24 17:06:16 +01:00
723db44933 Make wood_tile_center craftable (#129)
place wood_tile_center craft recipe before wood_tile so that it's craftable, otherwise crafting a wood_tile_center gives a normal wood_tile since they all belong to group:wood.
2018-10-05 19:46:55 +02:00
5fc5fce74e Fix double definition of paper from papyrus (#124) 2018-07-27 12:11:05 +02:00
846214993f Add aliases for MTG corner stairs (#117) 2018-07-19 19:24:30 +02:00
10dd84a7f1 Remove brackets around the initial version number in the changelog 2018-04-22 00:14:17 +02:00
8ff1cb598f Update documentation 2018-03-26 19:09:44 +02:00
7d701da5b9 Move recipe definitions to a separate file and function. 2018-03-26 19:09:44 +02:00
d5edcb2a10 Add a register_custom_subset function 2018-03-26 19:09:44 +02:00
c711946453 Move node registrations to a separate file 2018-03-26 19:09:44 +02:00
4d2a7ab6fe Move definitions to a separate file
Make definitions table global
Replace stairsplus.copytable() function with table.copy()
2018-03-26 19:09:44 +02:00
832b8f8817 Craft Circle Stone Brick and Stone tile (#82)
* Craft Circle Stone Brick and Stone tile

Craft Circle Stone Brick was similar furnace.
Stone Tile is more similar with stone block.

* Modify Circle Stone Brick

* Modify craft Stone Tile
2018-02-17 12:08:08 -08:00
Foz
f6e0db21b2 Finish aliasing split_stone_tile_alt
to checker_stone_tile.
2017-12-31 12:51:25 -08:00
Foz
413054fd2f Handle wood_tile replacement more carefully.
- An LBM is added to handle replacements of wood_tiles on the map while preserving there rotation about the +y (vertical) axis.  This will preserve existing floor patterns.  Unfortunately, due to the preexisting side tile orientations, preserving wall patterns is not possible while also reducing the wood_tiles down to just one node.

 - Deprecate the no longer used wood_tiles (wood_tile_right, wood_tile_left, wood_tile_down, and wood_tile_flipped), and add recipes to convert them.

 - Rename wood_tile_up to wood_tile_offset.

Closes #101
2017-12-29 22:08:38 -08:00
Foz
652d431664 Remove commented code and unused textures. 2017-12-29 16:22:50 -08:00
Foz
cc7e1271be Revert "Undo adding glass detail, but leave the colorizing"
This reverts commit 281268e7bc.

The commit needs to be reverted because it prevents connected glass.
2017-12-29 16:22:50 -08:00
Foz
e6b5336bad Readd tar block. Fixes #103
The proper way to resolve the redundancy between `building_blocks:Tar` and `moreblocks:tar` is with an alias in building_blocks as noted in issue #68.

The recipe conflict with streetsmod has been resolved by using `default:pine_tree` in place of `default:gravel`.  This may also be more realistic than gravel as a source of tar because pine derived tar was once of major economic importance.
2017-12-29 16:22:09 -08:00
Foz
3f7edb39a1 Adjust shelf recipies.
- The math of returning glass framents will never work when cleaning a shelf because we would need to return 1.5 fragments so just return glass bottles instead.

 - Removed the recipe for a vessels:shelf from group:vessels because it doesn't make sense to return glass bottles if, for example, the shelf was crafted from steel bottles.
2017-12-28 22:17:42 -08:00
Foz
64eade096e Fix typo. 2017-12-28 22:17:42 -08:00
Foz
2b76b077f0 Drop paramtype2 from glass before registering.
Fix minetest-mods/moreblocks#98

Caused by cf1b054a99, 6a996eb86a and minetest/minetest_game@2f46103ff8.

For some unknown reason `default:glass` and `obsidian:glass` have `paramtype2 = "glasslikeliquidlevel"`.  After the refactor of `stairsplus/registrations.lua`, all of the source node's defs are passed along to `stairsplus:register_all()`.  Prior to cf1b054a99 the paramtype2 setting was discarded.
2017-12-28 20:00:14 -08:00
Foz
d91da8b442 Fix slab descriptions.
A regression caused the description of slabs to revert to the source block's description.  This commit fixes the regression and adds descriptions which were missing for the recently added slabs (two_sides, three_sides, and three_sides_u).

Closes minetest-mods/moreblocks#96
2017-12-28 19:59:38 -08:00
Foz
6f1ee946a0 Fix saw left-over naming bug.
The appended '_bottom' is left over from an older naming convention and relies
on an alias to avoid unknown nodes showing up in the saw's left-over bin.
2017-12-28 19:59:13 -08:00
Foz
9eb4926d8d Fix deprecated alias. 2017-12-28 19:58:46 -08:00
281268e7bc Undo adding glass detail, but leave the colorizing 2017-12-28 19:56:57 -08:00
350a5f49e7 Make trap-stones see-through when inside them 2017-12-28 19:56:57 -08:00
0e2c30ec72 Change tiles for the glass
- Use colorization of the default glass texture

- Remove snappiness from compressed dirt

- Turn spaces into tabs for the first line of all-faces pine and aspen trees
2017-12-28 19:56:57 -08:00
b7217dd1f7 Resync with upstream again 2017-12-28 19:56:57 -08:00
a8a06d8deb Add compressed dirt, remove redundant tar
Tar already exists in building_blocks, and the recipe to cook it comes into conflict with what's in streetsmod, where gravel can be cooked into asphalt. However, the texture for it is retained in case it needs to be derived from again in the future.
Dirt can be collected in as much quanitites as cobblestone can be, so in place of tar is a way to pack dirt when so much of it is collected.
The compressed dirt shares most properities with the compressed cobble, except that can be dug by hand, but digging it takes as long as with gravel. Its texture is a recolor of this mod's tar block.
In addition, a function for dirt sound has been added, and compressed dirt makes use of it.
The new node is inspired in part by a counterpart on the Xanadu server, where there is also a counterpart to compressed cobble.
2017-12-28 19:56:57 -08:00
4f9b05be4e Rename empty bookshelf to empty shelf
This to account for the fact that vessel shelves can now be used here. Additionally, really loop back to cobblestone in relationship to the stone tile and its variants.
2017-12-28 19:56:57 -08:00
da652c16cd Even more node and craft changes
- Enable many nodes to be rotated by the screwdriver

- Reduce redundancy of the the wood tiles; use the screwdriver to achieve them

- Add extra crafts dealing with empty shelves

- Get rid of snappiness in all blocks; it's only useful for plants

- Loop between stone tile, its variants, and cobblestone
2017-12-28 19:56:57 -08:00
1b78097ab7 Tweak more nodes, add a few new ones
- All blocks: is_ground_content = false

- New nodes: All-faces pine, acacia, and aspen trees

- Add most stones to the stone group
2017-12-28 19:56:57 -08:00
dbba372137 Make many crafts more open with groups, remove redundant recipes 2017-12-28 19:56:57 -08:00
4c767ad7ff add stair and slab groups 2017-12-28 19:54:45 -08:00
Foz
780df105ea Stop assuming stair and slab aliases are required.
Only make aliases automatically for stairs and slabs from MTG stairs mod. Let other mods worry about aliasing themselves.  Fixes minetest-mods/moreblocks#45
2017-12-28 18:00:07 -08:00
8f6176f68c Update CHANGELOG to acknowledge a bug fix 2017-12-19 23:47:00 +01:00
6a996eb86a Refactor stairsplus registrations (#93)
* Refactor stairsplus registrations

 - Reorganize and remove redundant code.
 - Remove sunlight_propagates=true and default to paramtype="light".
    This causes cut blocks to have a shadow but not completely block light.
 - Fix several bugs (#90, #91, #92).

* Readd sunlight_propagates=true for compatibility.
2017-12-19 23:42:45 +01:00
80d35c8215 Add listring for circular saw 2017-11-20 15:09:37 -08:00
65e3afdd8b Update changelog to add the recently-merged bug fix 2017-11-20 23:13:16 +01:00
1fa4669ae8 Fix "replacement when inv is full" (#85)
* fix replacement when inv is full.

* Use allow_metadata_inventory_take instead
2017-11-20 23:09:27 +01:00
f2ede87a5a Fix the version comparison links in the changelog 2017-10-05 19:06:57 +02:00
16ae14f458 Prepare for v1.1.0 release
- Rewrite the README entirely with new installation instructions
- Tweak the styling in CONTRIBUTING.md and CHANGELOG.md
2017-10-04 20:43:50 +02:00
59c384dca4 Update the change log with new additions in More Blocks 2017-10-02 23:54:40 +02:00
df8c150c9a Add Sokomine to the copyright line of circular_saw.lua 2017-09-03 00:46:49 +02:00
7347b05e3e Replace deprecated methods:
- 'setting_get' with 'settings:get'
- 'setting_getbool' with 'settings:get_bool'
2017-08-12 14:08:24 -07:00
acd570ba0d Replace deprecated function 'intllib.Getter':
- Check first for 'intllib.make_gettext_pair', otherwise continue using
deprecated function
2017-08-12 14:08:04 -07:00
f3005d6367 Call 'global_exists' in place of 'get_modpath' for 'intllib' check 2017-08-12 14:08:04 -07:00
fc3c5f4738 Support tin and silver/sandstone blocks (#79)
Allows tin blocks and silver/desert sandstone blocks to be used in the circular saw.
2017-08-12 14:07:33 -07:00
fbfb079f54 Make wool sawable (#72)
* Make wool sawable

Based on my simple research https://github.com/minetest-mods/moreblocks/issues/71 enabling wool should not cause major slowdowns.

Code pasted from gloopblocks

* List wool as optional dependancy

* Added check for wool dependancy

* Make life easier for translators
2017-03-14 22:13:16 -07:00
e9c6cef4dd build a list of all of the stairsplus slab/stair/etc... shapes (#70)
for other mods to reference.
2017-02-23 17:12:36 +01:00
5f35766ed0 Update change log with the new Stairs+ nodes 2017-02-23 17:10:49 +01:00
f4b68fbfd7 add some 0.4.15 default nodes to table saw, including farming:straw (#69)
* add some 0.4.15 default nodes to table saw
including farming:straw

* fix hard-coded drop
2017-02-23 17:08:22 +01:00
6a1ffa7651 Update change log with the new circular saw nodes 2017-02-21 23:01:41 +01:00
0569ff9683 add a few new shapes to the table saw: (#67)
* 1/16 slab, L-shaped (two sides)
* 1/16 slab, corner-shaped (three sides)
* 1/16 slab, U-shaped (three sides)
2017-02-21 22:58:40 +01:00
6f033c1695 Add a contribution guide 2017-02-20 18:37:22 +01:00
831bbb2b27 Prepare for v1.0.0 release 2017-02-19 13:35:16 +01:00
4ad4dc958f Remove crafting recipes regarding removed jungle sticks
Forgotten in 34c01e66c7
2017-01-27 11:21:45 -08:00
cf1b054a99 allow passing paramtype2 to the nodes being created (#65) 2017-01-26 22:11:45 +01:00
81f77ae97e Prevent creating a global 2016-12-31 12:33:09 -08:00
085e9d56bc Remove unused gui_slots 2016-12-31 12:33:09 -08:00
5500c9906c Run cleanfile on all files, fixing whitespace issues. 2016-12-31 12:33:09 -08:00
d587b4d23f Add luacheckrc file. 2016-12-31 12:33:09 -08:00
01b411c753 Don't unnecessarily break on stable 0.4.14. (#62)
This uses the metal sounds when available
(0.4.14-dev), or the stone sounds otherwise.
2016-12-19 13:29:17 +01:00
2bd998e791 a few multi texture models 2016-12-15 15:12:53 -08:00
de620e4ff8 Some fixes for keeping in line with the default game (#59)
* Tweak some nodes

- Add function for recently-added metal sounds, and make copper patina use this sound
- Add all the wood tiles to the wood group
- Make empty bookshelf usable as fuel for half the time of book and vessel shelves (for 15 seconds)

* Return the books when crafting enpty bookshelves
2016-12-03 18:53:07 +01:00
7f06db2200 Add Alias Functions (#54)
* register_alias
* register_alias_force
2016-10-03 12:14:34 +02:00
ab2c63270f Max light source is 14. (#56) 2016-09-19 10:09:40 -07:00
15033a3514 use valid license for my texture (#51) 2016-08-19 12:04:14 +02:00
34c01e66c7 Remove unnecessary things (#47)
* Removed Junglwood fences -> Alias with default:fence_junglewood
* Removed Jungle stick -> Alias with default:stick
* Removed unnecessary redefinitions because all the overridden options are the same as in minetest_game.
2016-07-12 12:55:15 -07:00
26a5273dd6 Fix drop logic. (#49)
The code

		not type(fields.drop) == "table"

was always false because it compares a boolean with a string,

		not (type(fields.drop) == "table")

is the intended logic.
2016-07-12 12:49:43 -07:00
db93277a98 Add support for the alternative drop syntax (#46)
Until now, when the moreblocks node for a node with the alternative drop syntax were registered, the game crashed.
2016-06-17 12:15:02 -07:00
30fba0ea40 Aspen tree registration in stairsplus. (#44) 2016-06-10 10:47:18 -07:00
27051c782e update readme for copperpatina (#40)
* add pithydon in credits
2016-05-19 22:41:40 -07:00
eb3f9363d5 add node copper patina (#37)
Good for building things like the statue of liberty.
2016-05-18 15:02:28 -07:00
fa6937ce7b Italian locale (#39) 2016-05-18 15:00:21 -07:00
70 changed files with 2936 additions and 1602 deletions

14
.luacheckrc Normal file
View File

@ -0,0 +1,14 @@
unused_args = false
allow_defined_top = true
read_globals = {
"DIR_DELIM",
"minetest", "core",
"dump",
"vector", "nodeupdate",
"VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack",
"intllib",
"default",
}

63
CHANGELOG.md Normal file
View File

@ -0,0 +1,63 @@
# 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.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 craft for:
- Stone Tile
- Circle Stone Bricks
- Stairs+:
- Move definitions to `stairsplus.defs` table in a separate file
- Move recipe definitions to `stairsplus.register_recipes` function in 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.2.0...HEAD
[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

10
CONTRIBUTING.md Normal file
View File

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

View File

@ -1,7 +1,6 @@
zlib license
============
# zlib license
Copyright (c) 2011-2015 Calinou and contributors
Copyright (c) 2011-2018 Hugo Locurcio and contributors
**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**

View File

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

View File

@ -1,7 +1,7 @@
--[[
More Blocks: alias definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -19,6 +19,9 @@ minetest.register_alias("moreblocks:stone_bricks", "default:stonebrick")
minetest.register_alias("moreblocks:stonebrick", "default:stonebrick")
minetest.register_alias("moreblocks:junglewood", "default:junglewood")
minetest.register_alias("moreblocks:jungle_wood", "default:junglewood")
minetest.register_alias("moreblocks:fence_junglewood", "default:fence_junglewood")
minetest.register_alias("moreblocks:fence_jungle_wood", "default:fence_junglewood")
minetest.register_alias("moreblocks:jungle_stick", "default:stick")
for _, t in pairs(circular_saw.names) do
minetest.register_alias("moreblocks:" .. t[1] .. "_jungle_wood" .. t[2],
@ -29,13 +32,13 @@ minetest.register_alias("moreblocks:horizontaljungletree", "moreblocks:horizonta
minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile")
minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks")
minetest.register_alias("moreblocks:ironstonebrick", "moreblocks:iron_stone_bricks")
minetest.register_alias("moreblocks:fence_junglewood", "moreblocks:fence_jungle_wood")
minetest.register_alias("moreblocks:coalstone", "moreblocks:coal_stone")
minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone")
minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile")
minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full")
minetest.register_alias("moreblocks:woodtile_centered", "moreblocks:wood_tile_centered")
minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up")
minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_offset")
minetest.register_alias("moreblocks:wood_tile_up", "moreblocks:wood_tile_offset")
minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down")
minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left")
minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right")
@ -54,6 +57,8 @@ minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf
minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick")
minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile")
minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree")
minetest.register_alias("moreblocks:empty_bookshelf","moreblocks:empty_shelf")
minetest.register_alias("moreblocks:split_stone_tile_alt","moreblocks:checker_stone_tile")
-- ABM for horizontal trees (fix facedir):
local horizontal_tree_convert_facedir = {7, 12, 9, 18}
@ -76,3 +81,25 @@ minetest.register_abm({
end,
})
minetest.register_lbm({
name = "moreblocks:reduce_wood_tile_redundancy",
nodenames = {
"moreblocks:wood_tile_left",
"moreblocks:wood_tile_down",
"moreblocks:wood_tile_right",
"moreblocks:wood_tile_flipped",
},
action = function(pos, node)
if node.name:find("left") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=1})
elseif node.name:find("down") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=2})
elseif node.name:find("right") then
minetest.set_node(pos, {name = "moreblocks:wood_tile_offset", param2=3})
else -- wood_tile_flipped
minetest.set_node(pos, {name = "moreblocks:wood_tile", param2=1})
end
minetest.log('action', "LBM replaced " .. node.name ..
" at " .. minetest.pos_to_string(pos))
end,
})

View File

@ -1,7 +1,7 @@
--[[
More Blocks: circular saw
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio, Sokomine and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -26,9 +26,9 @@ circular_saw.cost_in_microblocks = {
1, 1, 1, 1, 1, 1, 1, 2,
2, 3, 2, 4, 2, 4, 5, 6,
7, 1, 1, 2, 4, 6, 7, 8,
3, 1, 1, 2, 4, 4, 2, 6,
7, 3, 7, 7, 4, 8, 3, 2,
6, 2, 1, 3, 4,
1, 2, 2, 3, 1, 1, 2, 4,
4, 2, 6, 7, 3, 7, 7, 4,
8, 3, 2, 6, 2, 1, 3, 4
}
circular_saw.names = {
@ -40,6 +40,7 @@ circular_saw.names = {
{"panel", "_4"},
{"micro", ""},
{"panel", ""},
{"micro", "_12"},
{"panel", "_12"},
{"micro", "_14"},
@ -48,6 +49,7 @@ circular_saw.names = {
{"panel", "_15"},
{"stair", "_outer"},
{"stair", ""},
{"stair", "_inner"},
{"slab", "_1"},
{"slab", "_2"},
@ -56,11 +58,16 @@ circular_saw.names = {
{"slab", "_three_quarter"},
{"slab", "_14"},
{"slab", "_15"},
{"slab", "_two_sides"},
{"slab", "_three_sides"},
{"slab", "_three_sides_u"},
{"stair", "_half"},
{"stair", "_alt_1"},
{"stair", "_alt_2"},
{"stair", "_alt_4"},
{"stair", "_alt"},
{"slope", ""},
{"slope", "_half"},
{"slope", "_half_raised"},
@ -69,6 +76,7 @@ circular_saw.names = {
{"slope", "_inner_half_raised"},
{"slope", "_inner_cut"},
{"slope", "_inner_cut_half"},
{"slope", "_inner_cut_half_raised"},
{"slope", "_outer"},
{"slope", "_outer_half"},
@ -145,7 +153,7 @@ function circular_saw:update_inventory(pos, amount)
self:reset(pos)
return
end
local stack = inv:get_stack("input", 1)
-- At least one "normal" block is necessary to see what kind of stairs are requested.
if stack:is_empty() then
@ -173,7 +181,7 @@ function circular_saw:update_inventory(pos, amount)
-- 0-7 microblocks may remain left-over:
inv:set_list("micro", {
modname .. ":micro_" .. material .. "_bottom " .. (amount % 8)
modname .. ":micro_" .. material .. " " .. (amount % 8)
})
-- Display:
inv:set_list("output",
@ -291,6 +299,17 @@ function circular_saw.on_metadata_inventory_put(
end
end
function circular_saw.allow_metadata_inventory_take(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input_stack = inv:get_stack(listname, index)
local player_inv = player:get_inventory()
if not player_inv:room_for_item("main", input_stack) then
return 0
else return stack:get_count()
end
end
function circular_saw.on_metadata_inventory_take(
pos, listname, index, stack, player)
@ -327,22 +346,30 @@ function circular_saw.on_metadata_inventory_take(
-- The recycle field plays no role here since it is processed immediately.
end
gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
function circular_saw.on_construct(pos)
local meta = minetest.get_meta(pos)
local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots
meta:set_string("formspec", "size[11,10]"..fancy_inv..
"label[0,0;" ..S("Input\nmaterial").. "]" ..
"list[current_name;input;1.5,0;1,1;]" ..
"label[0,1;" ..S("Left-over").. "]" ..
"list[current_name;micro;1.5,1;1,1;]" ..
"label[0,2;" ..S("Recycle\noutput").. "]" ..
"list[current_name;recycle;1.5,2;1,1;]" ..
"field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" ..
"button[1,3.2;1,1;Set;" ..S("Set").. "]" ..
"list[current_name;output;2.8,0;8,6;]" ..
"list[current_player;main;1.5,6.25;8,4;]")
meta:set_string(
"formspec", "size[11,10]"..fancy_inv..
"label[0,0;" ..S("Input\nmaterial").. "]" ..
"list[current_name;input;1.5,0;1,1;]" ..
"label[0,1;" ..S("Left-over").. "]" ..
"list[current_name;micro;1.5,1;1,1;]" ..
"label[0,2;" ..S("Recycle\noutput").. "]" ..
"list[current_name;recycle;1.5,2;1,1;]" ..
"field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" ..
"button[1,3.2;1,1;Set;" ..S("Set").. "]" ..
"list[current_name;output;2.8,0;8,6;]" ..
"list[current_player;main;1.5,6.25;8,4;]" ..
"listring[current_name;output]" ..
"listring[current_player;main]" ..
"listring[current_name;input]" ..
"listring[current_player;main]" ..
"listring[current_name;micro]" ..
"listring[current_player;main]" ..
"listring[current_name;recycle]" ..
"listring[current_player;main]"
)
meta:set_int("anz", 0) -- No microblocks inside yet.
meta:set_string("max_offered", 99) -- How many items of this kind are offered by default?
@ -371,14 +398,14 @@ function circular_saw.can_dig(pos,player)
end
minetest.register_node("moreblocks:circular_saw", {
description = S("Circular Saw"),
drawtype = "nodebox",
description = S("Circular Saw"),
drawtype = "nodebox",
node_box = {
type = "fixed",
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg
{0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg
{-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg
{-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg
{0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg
{-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop
{-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top)
@ -389,9 +416,9 @@ minetest.register_node("moreblocks:circular_saw", {
tiles = {"moreblocks_circular_saw_top.png",
"moreblocks_circular_saw_bottom.png",
"moreblocks_circular_saw_side.png"},
paramtype = "light",
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
paramtype2 = "facedir",
groups = {choppy = 2,oddly_breakable_by_hand = 2},
sounds = default.node_sound_wood_defaults(),
on_construct = circular_saw.on_construct,
@ -411,6 +438,7 @@ minetest.register_node("moreblocks:circular_saw", {
allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move,
-- Only input- and recycle-slot are intended as input slots:
allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put,
allow_metadata_inventory_take = circular_saw.allow_metadata_inventory_take,
-- Taking is allowed from all slots (even the internal microblock slot). Moving is forbidden.
-- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material:
on_metadata_inventory_put = circular_saw.on_metadata_inventory_put,

View File

@ -1,14 +1,14 @@
--[[
More Blocks: configuration handling
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
moreblocks.config = {}
local function getbool_default(setting, default)
local value = minetest.setting_getbool(setting)
local value = minetest.settings:get_bool(setting)
if value == nil then
value = default
end
@ -21,7 +21,7 @@ local function setting(settingtype, name, default)
getbool_default("moreblocks." .. name, default)
else
moreblocks.config[name] =
minetest.setting_get("moreblocks." .. name) or default
minetest.settings:get("moreblocks." .. name) or default
end
end

View File

@ -1,7 +1,7 @@
--[[
More Blocks: crafting recipes
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -12,12 +12,7 @@ minetest.register_craft({
minetest.register_craft({
output = "default:stick",
recipe = {{"default:sapling"},}
})
minetest.register_craft({
output = "default:stick",
recipe = {{"default:junglesapling"},}
recipe = {{"group:sapling"},}
})
minetest.register_craft({
@ -28,26 +23,12 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:junglewood",
recipe = {
{"moreblocks:jungle_stick", "moreblocks:jungle_stick"},
{"moreblocks:jungle_stick", "moreblocks:jungle_stick"},
}
})
minetest.register_craft({
output = "default:dirt_with_grass",
type = "shapeless",
recipe = {"default:junglegrass", "default:dirt"},
})
minetest.register_craft({
output = "default:dirt_with_grass",
type = "shapeless",
recipe = {"default:mese", "default:dirt"},
})
minetest.register_craft({
output = "default:mossycobble",
type = "shapeless",
@ -55,32 +36,27 @@ minetest.register_craft({
})
minetest.register_craft({
output = "default:mossycobble",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:cobble"},
output = "moreblocks:wood_tile_center 9",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "moreblocks:wood_tile", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "moreblocks:wood_tile 9",
recipe = {
{"default:wood", "default:wood", "default:wood"},
{"default:wood", "default:wood", "default:wood"},
{"default:wood", "default:wood", "default:wood"},
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "moreblocks:wood_tile_flipped",
recipe = {{"moreblocks:wood_tile"},}
})
minetest.register_craft({
output = "moreblocks:wood_tile_center 9",
recipe = {
{"default:wood", "default:wood", "default:wood"},
{"default:wood", "moreblocks:wood_tile", "default:wood"},
{"default:wood", "default:wood", "default:wood"},
}
type = "shapeless",
output = "moreblocks:wood_tile",
recipe = {"moreblocks:wood_tile_flipped"}
})
minetest.register_craft({
@ -92,7 +68,7 @@ minetest.register_craft({
})
minetest.register_craft({
output = "moreblocks:wood_tile_up",
output = "moreblocks:wood_tile_offset",
recipe = {
{"default:stick"},
{"moreblocks:wood_tile_center"},
@ -100,46 +76,29 @@ minetest.register_craft({
})
minetest.register_craft({
output = "moreblocks:wood_tile_down",
recipe = {
{"moreblocks:wood_tile_center"},
{"default:stick"},
}
type = "shapeless",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_down"}
})
minetest.register_craft({
output = "moreblocks:wood_tile_left",
recipe = {
{"default:stick", "moreblocks:wood_tile_center"},
}
type = "shapeless",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_left"}
})
minetest.register_craft({
output = "moreblocks:wood_tile_right",
recipe = {
{"moreblocks:wood_tile_center", "default:stick"},
}
type = "shapeless",
output = "moreblocks:wood_tile_offset",
recipe = {"moreblocks:wood_tile_right"}
})
minetest.register_craft({
output = "moreblocks:junglestick 4",
recipe = {{"default:junglewood"},}
})
minetest.register_craft({
output = "moreblocks:fence_jungle_wood 2",
output = "moreblocks:circle_stone_bricks 5",
recipe = {
{"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
{"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
}
})
minetest.register_craft({
output = "moreblocks:circle_stone_bricks 8",
recipe = {
{"default:stone", "default:stone", "default:stone"},
{"default:stone", "", "default:stone"},
{"default:stone", "default:stone", "default:stone"},
{"", "default:stone", ""},
{"default:stone", "default:coal_lump", "default:stone"},
{"", "default:stone", ""},
}
})
@ -161,6 +120,33 @@ 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({
output = "moreblocks:sweeper 4",
recipe = {
@ -170,10 +156,11 @@ minetest.register_craft({
})
minetest.register_craft({
output = "moreblocks:stone_tile 4",
output = "moreblocks:stone_tile 9",
recipe = {
{"default:cobble", "default:cobble"},
{"default:cobble", "default:cobble"},
{"default:cobble", "default:cobble", "default:cobble"},
{"default:cobble", "default:stone", "default:cobble"},
{"default:cobble", "default:cobble", "default:cobble"},
}
})
@ -185,12 +172,20 @@ minetest.register_craft({
})
minetest.register_craft({
output = "moreblocks:split_stone_tile_alt",
output = "moreblocks:checker_stone_tile",
recipe = {
{"moreblocks:split_stone_tile"},
}
})
-- When approaching the below craft, loop back to cobblestone, which can then be used to craft stone tiles again
minetest.register_craft({
output = "default:cobble",
recipe = {
{"moreblocks:checker_stone_tile"},
}
})
minetest.register_craft({
output = "moreblocks:grey_bricks 2",
type = "shapeless",
@ -204,9 +199,33 @@ minetest.register_craft({
})
minetest.register_craft({
output = "moreblocks:empty_bookshelf",
output = "moreblocks:empty_shelf",
type = "shapeless",
recipe = {"moreblocks:sweeper", "default:bookshelf"},
replacements = {{"default:bookshelf", "default:book 3"}},
-- When obtaining an empty shelf, return the books used in it as well
})
minetest.register_craft({
output = "moreblocks:empty_shelf",
type = "shapeless",
recipe = {"moreblocks:sweeper", "vessels:shelf"},
replacements = {{"vessels:shelf", "vessels:glass_bottle 3"}},
})
minetest.register_craft({
type = "shapeless",
output = "default:bookshelf",
recipe = {"moreblocks:empty_shelf", "default:book", "default:book", "default:book"},
})
minetest.register_craft({
output = "moreblocks:empty_shelf",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "", ""},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
@ -228,16 +247,16 @@ minetest.register_craft({
minetest.register_craft({
output = "moreblocks:plankstone 4",
recipe = {
{"default:stone", "default:wood"},
{"default:wood", "default:stone"},
{"group:stone", "group:wood"},
{"group:wood", "group:stone"},
}
})
minetest.register_craft({
output = "moreblocks:plankstone 4",
recipe = {
{"default:wood", "default:stone"},
{"default:stone", "default:wood"},
{"group:wood", "group:stone"},
{"group:stone", "group:wood"},
}
})
@ -400,12 +419,36 @@ minetest.register_craft({
recipe = {"default:mese_crystal_fragment", "default:stone"},
})
minetest.register_craft({
output = "moreblocks:trap_desert_stone",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:desert_stone"},
})
minetest.register_craft({
output = "moreblocks:trap_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:glass"},
})
minetest.register_craft({
output = "moreblocks:trap_obsidian_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:obsidian_glass"},
})
minetest.register_craft({
output = "moreblocks:trap_obsidian",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:obsidian"},
})
minetest.register_craft({
output = "moreblocks:trap_sandstone",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "default:sandstone"},
})
minetest.register_craft({
output = "moreblocks:cactus_brick",
type = "shapeless",
@ -437,6 +480,20 @@ 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({
output = "moreblocks:cobble_compressed",
recipe = {
@ -454,12 +511,28 @@ minetest.register_craft({
})
minetest.register_craft({
type = "cooking", output = "moreblocks:tar", recipe = "default:gravel",
type = "cooking", output = "moreblocks:tar", recipe = "default:pine_tree",
})
if minetest.setting_getbool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then”
minetest.register_craft({
type = "shapeless",
output = "moreblocks:copperpatina",
recipe = {"group:water_bucket", "default:copperblock"},
replacements = {
{"group:water_bucket", "bucket:bucket_empty"}
}
})
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"moreblocks:copperpatina"},
}
})
if minetest.settings:get_bool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then”
minetest.register_craft({
output = "moreblocks:circular_saw",
output = "moreblocks:circular_saw",
recipe = {
{ "", "default:steel_ingot", "" },
{ "group:wood", "group:wood", "group:wood"},

View File

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

View File

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

70
locale/it.txt Normal file
View File

@ -0,0 +1,70 @@
#
# Italian translation
# Translator: Emon
#
###init.lua###
[moreblocks] loaded. = [moreblocks] caricato.
###nodes.lua###
Jungle Wood Fence = Recinzione in legno della giungla
Empty Bookshelf = Libreria vuota
Clean Glass = Vetro pulito
Plankstone = Pietra e legno
Wooden Tile = Mattonella in legno
Full Wooden Tile = Mattonella in legno pieno
Centered Wooden Tile = Mattonella in legno centrata
Up Wooden Tile = Mattonella in legno verso l'alto
Down Wooden Tile = Mattonella in legno verso il basso
Left Wooden Tile = Mattonella in legno verso sinistra
Right Wooden Tile = Mattonella in legno verso destra
Circle Stone Bricks = Mattoni concentrici in pietra
Stone Tile = Mattonella in pietra
Split Stone Tile = Mattonella in pietra divisa
Glow Glass = Vetro luminoso
Super Glow Glass = Super vetro luminoso
Coal Glass = Vetro e carbone
Iron Glass = Vetro e ferro
Coal Checker = Scacchiera in carbone
Iron Checker = Scacchiera in ferro
Trap Stone = Pietra trappola
Trap Glass = Vetro trappola
Trap Glow Glass = Vetro luminoso trappola
Trap Super Glow Glass = Super vetro luminoso trappola
Coal Stone = Pietra in carbone
Iron Stone = Pietra in ferro
Coal Stone Bricks = Mattoni di pietra in carbone
Iron Stone Bricks = Mattoni di pietra in ferro
Cactus Checker = Scacchiera in cactus
Cactus Brick = Mattoni di cactus
Sweeper = Spazzola
Jungle Stick = Bastone in legno della giungla
Rope = Corda
All-faces Tree = Albero su ogni lato
###circular_saw.lua###
Circular Saw = Sega circolare
Circular saw, empty (owned by %s) = Sega circolare, vuota (di proprietà di %s)
Circular saw, working with %s (owned by %s) = Sega circolare, in funzione su %s (di proprietà di %s)
Circular saw, empty = Sega circolare, vuota
Circular saw is empty (owned by %s) = La sega circolare è vuota (di proprietà di %s)
Input\nmaterial = Materiale\niniziale
Left-over = Scarto
Max = Max.
Set = Imp.
Recycle\noutput = Ricicla\nfinale
###ownership.lua###
someone = qualcuno
Sorry, %s owns that spot. = Spiacente, quel punto è di proprietà di %s
###./stairsplus/*###
%s Stairs = Scale - %s
%s Slab = Lastra - %s
%s Panel = Pannello - %s
%s Microblock = Microblocco %s
%s Pane = Pannello - %s
%s Fence = Recinzione - %s

View File

@ -1,26 +1,56 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope.mtl
o Cube_Cube.002
g top
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 0.7071 -0.7071
s off
f 2/1/1 1/2/1 4/3/1 3/4/1
g bottom
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 1.000000 1.000000
vt 0.000000 1.000000
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
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 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
f 6/5/2 5/6/2 7/7/2 8/8/2
g right
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 9/9/3 11/10/3 10/11/3
g left
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 12/12/4 13/13/4 14/14/4
g back
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 -0.0000 1.0000
s off
f 15/15/5 16/16/5 17/17/5 18/18/5

View File

@ -1,33 +1,68 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_cut.mtl
o moreblocks_slope_cut
g top
v 0.500000 0.500000 0.500000
v -0.500000 -0.000000 0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.5000 0.0000
vt 1.0000 1.0000
vt 0.5000 2.0000
vt 0.0000 1.0000
vn -0.4082 0.8165 -0.4082
s 1
f 4/1/1 2/2/1 1/3/1 3/4/1
g bottom
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 -1.0000 -0.0000
s 1
f 6/5/2 5/6/2 8/7/2 7/8/2
g right
v -0.500000 -0.500000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vn -1.0000 0.0000 0.0000
s 1
f 11/9/3 9/10/3 10/11/3
g left
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 1.0000
vn 1.0000 0.0000 0.0000
s 1
f 12/12/4 14/13/4 15/14/4 13/15/4
g back
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.000000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 0.5000
vn -0.0000 -0.0000 1.0000
s 1
f 16/16/5 17/17/5 18/18/5 19/19/5
g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
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
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 0.0000 0.5000
vn 0.0000 0.0000 -1.0000
s 1
f 20/20/6 22/21/6 21/22/6

View File

@ -1,28 +1,56 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_half.mtl
o Cube_Cube.002
g top
v 0.500000 -0.000000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 0.8944 -0.4472
s off
f 2/1/1 1/2/1 4/3/1 3/4/1
g bottom
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 1.000000 0.500000
vt 0.000000 0.500000
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
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 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
f 6/5/2 5/6/2 7/7/2 8/8/2
g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 9/9/3 11/10/3 10/11/3
g left
v 0.500000 -0.000000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 12/12/4 13/13/4 14/14/4
g back
v 0.500000 -0.000000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 -0.0000 1.0000
s off
f 15/15/5 16/16/5 17/17/5 18/18/5

View File

@ -1,32 +1,72 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_half_raised.mtl
o Cube.001
g top
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 0.500000 0.500000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vn 0.0000 0.8944 -0.4472
s off
f 2/1/1 1/2/1 4/3/1 3/4/1
g bottom
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vn 0.0000 -1.0000 -0.0000
s off
f 6/5/2 5/6/2 7/7/2 8/8/2
g right
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 9/9/3 10/10/3 11/11/3 12/12/3
g left
v 0.500000 0.000000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 1.000000 1.000000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
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
vt 1.0000 0.5000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 2/5/2 5/2/2 6/3/2 3/4/2
f 5/5/3 7/6/3 8/3/3 6/4/3
f 7/1/4 1/6/4 4/3/4 8/4/4
f 4/4/5 3/1/5 6/6/5 8/3/5
f 2/4/6 1/1/6 7/6/6 5/3/6
f 13/13/4 15/14/4 16/15/4 14/16/4
g back
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 -0.0000 1.0000
s off
f 19/17/5 17/18/5 18/19/5 20/20/5
g front
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 0.0000 -1.0000
s off
f 21/21/6 23/22/6 24/23/6 22/24/6

View File

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

View File

@ -1,32 +1,72 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_cut.mtl
o moreblocks_slope_inner_cut
g top
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.5000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.5774 0.5774 -0.5774
s 1
f 3/1/1 2/2/1 1/3/1
f 4/4/2 3/5/2 1/6/2
g bottom
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
s 1
f 6/7/3 5/8/3 7/9/3 8/10/3
g right
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn -1.0000 0.0000 0.0000
s 1
f 11/11/4 9/12/4 10/13/4
g left
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 1.0000 0.0000 0.0000
s 1
f 12/14/5 13/15/5 14/16/5 15/17/5
g back
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -0.0000 1.0000
s 1
f 18/18/6 16/19/6 17/20/6 19/21/6
g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
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.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
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
s 1
f 20/22/7 22/23/7 21/24/7

View File

@ -1,34 +1,72 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_cut_half.mtl
o moreblocks_slope_inner_cut_half
g top
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.5000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.4082 0.8165 -0.4082
s 1
f 3/1/1 2/2/1 1/3/1
f 4/4/2 3/5/2 1/6/2
g bottom
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
s 1
f 6/7/3 5/8/3 7/9/3 8/10/3
g right
v -0.500000 -0.500000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vn -1.0000 0.0000 0.0000
s 1
f 11/11/4 9/12/4 10/13/4
g left
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 0.5000
vn 1.0000 0.0000 0.0000
s 1
f 12/14/5 13/15/5 14/16/5 15/17/5
g back
v 0.500000 -0.500000 0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.000000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 0.5000
vn 0.0000 -0.0000 1.0000
s 1
f 18/18/6 16/19/6 17/20/6 19/21/6
g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 1.000000 1.000000
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
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 0.0000 0.5000
vn 0.0000 0.0000 -1.0000
s 1
f 20/22/7 22/23/7 21/24/7

View File

@ -1,35 +1,76 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_cut_half_raised.mtl
o moreblocks_slope_inner_cut_half_raised
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
g top
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.5000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.4082 0.8165 -0.4082
s 1
f 3/1/1 2/2/1 1/3/1
f 4/4/2 3/5/2 1/6/2
g bottom
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
s 1
f 6/7/3 5/8/3 7/9/3 8/10/3
g right
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 0.000000 -0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
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
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 0.5000
vn -1.0000 0.0000 0.0000
s 1
f 11/11/4 9/12/4 10/13/4 12/14/4
g left
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 1.0000 0.0000 0.0000
s 1
f 13/15/5 14/16/5 15/17/5 16/18/5
g back
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -0.0000 1.0000
s 1
f 19/19/6 17/20/6 18/21/6 20/22/6
g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 0.000000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 1.0000
vn -0.0000 0.0000 -1.0000
s 1
f 21/23/7 23/24/7 24/25/7 22/26/7

View File

@ -1,35 +1,85 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_half.mtl
o Cube_Cube.001
g top
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vn 0.0000 0.8944 -0.4472
vn -0.4472 0.8944 0.0000
s off
f 3/1/1 2/2/1 4/3/1
f 2/4/2 1/5/2 5/6/2
g bottom
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.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.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 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
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
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 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 6/3/2 7/4/2
f 5/1/3 2/2/3 6/4/3
f 1/2/4 4/3/4 8/4/4
f 8/1/5 4/2/5 3/3/5 7/4/5
f 7/3/6 3/4/6 2/1/6 5/2/6
f 2/1/7 1/2/7 8/3/7
l 7 9
l 2 9
f 10/7/3 7/8/3 6/9/3 9/10/3
l 9 8
l 11 9
g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 12/11/4 13/12/4 14/13/4
l 15 14
g left
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 16/14/5 17/15/5 18/16/5 19/17/5
l 20 17
g back
v 0.500000 -0.000000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -0.0000 1.0000
s off
f 24/18/6 22/19/6 21/20/6 23/21/6
l 25 24
l 25 21
g front
v 0.500000 0.000000 -0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 0.0000 -1.0000
s off
f 26/22/7 27/23/7 29/24/7

View File

@ -1,38 +1,86 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_inner_half_raised.mtl
o Cube_Cube.003
g top
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 0.8944 -0.4472
vn -0.4472 0.8944 0.0000
s off
f 3/1/1 2/2/1 4/3/1
f 2/2/2 1/4/2 5/5/2
g bottom
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 0.0000 -1.0000 -0.0000
s off
f 8/6/3 9/7/3 7/8/3 6/9/3
l 10 8
g right
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.500000
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
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 1/1/1 2/2/1 3/3/1 4/4/1
f 5/1/2 2/2/2 6/4/2
f 7/3/3 3/4/3 2/1/3 5/2/3
f 2/2/4 1/3/4 8/4/4
f 7/1/5 9/2/5 4/3/5 3/4/5
f 6/5/6 1/2/6 4/3/6 9/4/6
f 7/4/7 5/1/7 6/6/7 9/3/7
l 2 10
l 7 10
f 13/10/4 11/11/4 12/12/4 15/13/4
g left
v 0.500000 0.500000 -0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn 1.0000 0.0000 0.0000
s off
f 16/14/5 17/15/5 18/16/5 19/17/5
l 20 17
g back
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vn 0.0000 -0.0000 1.0000
s off
f 24/18/6 22/19/6 21/20/6 23/21/6
l 25 21
l 25 24
g front
v 0.500000 0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 0.5000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -0.0000 0.0000 -1.0000
s off
f 28/22/7 26/23/7 27/24/7 30/25/7
l 29 26

View File

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

View File

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

View File

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

View File

@ -1,28 +1,56 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_outer_cut_half_raised.mtl
o Cube_Cube.005
g top
v -0.500000 -0.000000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 0.000000 -0.500000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn -0.4082 0.8165 -0.4082
s off
f 1/1/1 2/2/1 3/3/1
g bottom
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
vt 0.0000 1.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn 0.0000 -1.0000 -0.0000
s off
f 4/4/2 6/5/2 5/6/2
g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0000 0.0000
vn -0.7071 0.0000 -0.7071
s off
f 8/7/3 7/8/3 10/9/3 9/10/3
g left
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
vt 0.000000 0.500000
vt 0.000000 0.000000
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
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 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
f 12/11/4 11/12/4 13/13/4 14/14/4
g back
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn -0.0000 -0.0000 1.0000
s off
f 15/15/5 16/16/5 17/17/5 18/18/5

View File

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

View File

@ -1,34 +1,74 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib moreblocks_slope_outer_half_raised.mtl
o Cube_Cube.006
g top
v -0.500000 -0.000000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
vt 1.0000 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 1.0000
vn 0.0000 0.8944 -0.4472
vn -0.4472 0.8944 0.0000
s off
f 4/1/1 2/2/1 3/3/1
f 4/1/2 1/4/2 2/2/2
g bottom
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn 0.0000 -1.0000 -0.0000
s off
f 7/5/3 6/6/3 5/7/3 8/8/3
g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 9/9/4 11/10/4 12/11/4 10/12/4
g left
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vn 1.0000 0.0000 0.0000
s off
f 14/13/5 13/14/5 15/15/5 16/16/5
g back
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vn -0.0000 -0.0000 1.0000
s off
f 17/17/6 18/18/6 19/19/6 20/20/6
g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
vt 0.000000 0.500000
vt 0.000000 0.000000
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 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
vt 0.0000 0.5000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.5000
vn 0.0000 0.0000 -1.0000
s off
f 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
f 22/21/7 21/22/7 24/23/7 23/24/7

301
nodes.lua
View File

@ -1,26 +1,48 @@
--[[
More Blocks: node definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = moreblocks.intllib
local sound_dirt = default.node_sound_dirt_defaults()
local sound_wood = default.node_sound_wood_defaults()
local sound_stone = default.node_sound_stone_defaults()
local sound_glass = default.node_sound_glass_defaults()
local sound_leaves = default.node_sound_leaves_defaults()
-- Don't break on 0.4.14 and earlier.
local sound_metal = (default.node_sound_metal_defaults
and default.node_sound_metal_defaults() or sound_stone)
local function tile_tiles(name)
local tex = "moreblocks_" ..name.. ".png"
return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"}
end
local function wood_tile_replace(itemstack, placer, pointed_thing)
local substack
if itemstack:get_name() == "moreblocks:wood_tile_flipped" then
substack = ItemStack("moreblocks:wood_tile")
else -- right, left, and down variants
substack = ItemStack("moreblocks:wood_tile_offset")
end
local _, success = minetest.item_place(substack, placer, pointed_thing)
if success then
itemstack:take_item()
end
return itemstack
end
local nodes = {
["wood_tile"] = {
description = S("Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_wood.png^moreblocks_wood_tile.png",
"default_wood.png^moreblocks_wood_tile.png",
"default_wood.png^moreblocks_wood_tile.png",
@ -30,148 +52,179 @@ local nodes = {
sounds = sound_wood,
},
["wood_tile_flipped"] = {
description = S("Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
description = S("Wooden Tile (Deprecated)"),
tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR180",
"default_wood.png^moreblocks_wood_tile.png^[transformR180"},
sounds = sound_wood,
no_stairs = true,
on_place = wood_tile_replace
},
["wood_tile_center"] = {
description = S("Centered Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = {"default_wood.png^moreblocks_wood_tile_center.png"},
sounds = sound_wood,
},
["wood_tile_full"] = {
description = S("Full Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = tile_tiles("wood_tile_full"),
sounds = sound_wood,
},
["wood_tile_up"] = {
description = S("Upwards Wooden Tile"),
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^moreblocks_wood_tile_up.png"},
["wood_tile_offset"] = {
description = S("Offset Wooden Tile"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
tiles = {"default_wood.png^moreblocks_wood_tile_offset.png"},
sounds = sound_wood,
no_stairs = true,
},
["wood_tile_down"] = {
description = S("Downwards Wooden Tile"),
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,
description = S("Downwards Wooden Tile (Deprecated)"),
tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_offset.png^[transformR180"},
no_stairs = true,
on_place = wood_tile_replace
},
["wood_tile_left"] = {
description = S("Leftwards Wooden Tile"),
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,
description = S("Leftwards Wooden Tile (Deprecated)"),
tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_offset.png^[transformR270"},
no_stairs = true,
on_place = wood_tile_replace
},
["wood_tile_right"] = {
description = S("Rightwards Wooden Tile"),
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,
description = S("Rightwards Wooden Tile (Deprecated)"),
tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_offset.png^[transformR90"},
no_stairs = true,
on_place = wood_tile_replace
},
["circle_stone_bricks"] = {
description = S("Circle Stone Bricks"),
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["grey_bricks"] = {
description = S("Stone Bricks"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["coal_stone_bricks"] = {
description = S("Coal Stone Bricks"),
groups = {cracky = 3},
paramtype2 = "facedir",
place_param2 = 0,
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["iron_stone_bricks"] = {
description = S("Iron Stone Bricks"),
groups = {cracky = 3},
paramtype2 = "facedir",
place_param2 = 0,
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["stone_tile"] = {
description = S("Stone Tile"),
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["split_stone_tile"] = {
description = S("Split Stone Tile"),
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"moreblocks_split_stone_tile_top.png",
"moreblocks_split_stone_tile.png"},
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["split_stone_tile_alt"] = {
description = S("Checkered Stone Tile"),
groups = {cracky = 3},
["checker_stone_tile"] = {
description = S("Checker Stone Tile"),
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["tar"] = {
description = S("Tar"),
groups = {cracky = 2, tar_block = 1},
groups = {cracky=2, tar_block=1},
is_ground_content = false,
sounds = sound_stone,
},
["dirt_compressed"] = {
description = S("Compressed Dirt"),
groups = {crumbly=2},
is_ground_content = false,
sounds = sound_dirt,
},
["cobble_compressed"] = {
description = S("Compressed Cobblestone"),
groups = {cracky = 1},
is_ground_content = false,
sounds = sound_stone,
},
["plankstone"] = {
description = S("Plankstone"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3},
is_ground_content = false,
tiles = tile_tiles("plankstone"),
sounds = sound_stone,
},
["iron_glass"] = {
description = S("Iron Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_iron_glass.png", "moreblocks_iron_glass_detail.png"},
tiles = {"moreblocks_iron_glass.png"},
tiles = {"default_glass.png^[colorize:#DEDEDE", "default_glass_detail.png^[colorize:#DEDEDE"},
paramtype = "light",
sunlight_propagates = true,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["coal_glass"] = {
description = S("Coal Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_coal_glass.png", "moreblocks_coal_glass_detail.png"},
tiles = {"moreblocks_coal_glass.png"},
tiles = {"default_glass.png^[colorize:#828282", "default_glass_detail.png^[colorize:#828282"},
paramtype = "light",
sunlight_propagates = true,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["clean_glass"] = {
description = S("Clean Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"},
tiles = {"moreblocks_clean_glass.png"},
tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"},
paramtype = "light",
sunlight_propagates = true,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["cactus_brick"] = {
description = S("Cactus Brick"),
paramtype2 = "facedir",
place_param2 = 0,
groups = {cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["cactus_checker"] = {
description = S("Cactus Checker"),
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
tiles = {"default_stone.png^moreblocks_cactus_checker.png",
"default_stone.png^moreblocks_cactus_checker.png",
"default_stone.png^moreblocks_cactus_checker.png",
@ -180,22 +233,27 @@ local nodes = {
"default_stone.png^moreblocks_cactus_checker.png^[transformR90"},
sounds = sound_stone,
},
["empty_bookshelf"] = {
description = S("Empty Bookshelf"),
tiles = {"default_wood.png", "default_wood.png",
"moreblocks_empty_bookshelf.png"},
groups = {snappy = 2, choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
["empty_shelf"] = {
description = S("Empty Shelf"),
paramtype2 = "facedir",
tiles = {"default_wood.png", "default_wood.png", "default_wood.png",
"default_wood.png", "moreblocks_empty_shelf.png", "moreblocks_empty_shelf.png"},
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
is_ground_content = false,
sounds = sound_wood,
furnace_burntime = 15,
no_stairs = true,
},
["coal_stone"] = {
description = S("Coal Stone"),
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["iron_stone"] = {
description = S("Iron Stone"),
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["coal_checker"] = {
@ -206,7 +264,8 @@ local nodes = {
"default_stone.png^moreblocks_coal_checker.png",
"default_stone.png^moreblocks_coal_checker.png^[transformR90",
"default_stone.png^moreblocks_coal_checker.png^[transformR90"},
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["iron_checker"] = {
@ -217,102 +276,158 @@ local nodes = {
"default_stone.png^moreblocks_iron_checker.png",
"default_stone.png^moreblocks_iron_checker.png^[transformR90",
"default_stone.png^moreblocks_iron_checker.png^[transformR90"},
groups = {cracky = 3},
groups = {stone = 1, cracky = 3},
is_ground_content = false,
sounds = sound_stone,
},
["trap_stone"] = {
description = S("Trap Stone"),
drawtype = "glasslike_framed",
tiles = {"default_stone.png^moreblocks_trap_box.png"},
walkable = false,
groups = {cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["trap_desert_stone"] = {
description = S("Trap Desert Stone"),
drawtype = "glasslike_framed",
tiles = {"default_desert_stone.png^moreblocks_trap_box.png"},
walkable = false,
groups = {cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["trap_glass"] = {
description = S("Trap Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_trap_glass.png", "default_glass_detail.png"},
tiles = {"moreblocks_trap_glass.png"},
tiles = {"default_glass.png^moreblocks_trap_box_glass.png", "default_glass_detail.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["fence_jungle_wood"] = {
description = S("Jungle Wood Fence"),
drawtype = "fencelike",
tiles = {"default_junglewood.png"},
inventory_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
["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",
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = sound_wood,
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["trap_obsidian"] = {
description = S("Trap Obsidian"),
drawtype = "glasslike_framed",
tiles = {"default_obsidian.png^moreblocks_trap_box.png"},
walkable = false,
groups = {cracky = 1, level = 2},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["trap_sandstone"] = {
description = S("Trap Sandstone"),
drawtype = "glasslike_framed",
tiles = {"default_sandstone.png^moreblocks_trap_box.png"},
walkable = false,
groups = {crumbly = 1, cracky = 3},
paramtype = "light",
is_ground_content = false,
sounds = sound_stone,
no_stairs = true,
},
["all_faces_tree"] = {
description = S("All-faces Tree"),
tiles = {"default_tree_top.png"},
groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood,
furnace_burntime = 30,
},
["all_faces_jungle_tree"] = {
description = S("All-faces Jungle Tree"),
tiles = {"default_jungletree_top.png"},
groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood,
furnace_burntime = 30,
furnace_burntime = 38,
},
["all_faces_pine_tree"] = {
description = S("All-faces Pine Tree"),
tiles = {"default_pine_tree_top.png"},
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
sounds = sound_wood,
furnace_burntime = 26,
},
["all_faces_acacia_tree"] = {
description = S("All-faces Acacia Tree"),
tiles = {"default_acacia_tree_top.png"},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = sound_wood,
furnace_burntime = 34,
},
["all_faces_aspen_tree"] = {
description = S("All-faces Aspen Tree"),
tiles = {"default_aspen_tree_top.png"},
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
sounds = sound_wood,
furnace_burntime = 22,
},
["glow_glass"] = {
description = S("Glow Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_glow_glass.png", "moreblocks_glow_glass_detail.png"},
tiles = {"moreblocks_glow_glass.png"},
tiles = {"default_glass.png^[colorize:#E9CD61", "default_glass_detail.png^[colorize:#E9CD61"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = 11,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["trap_glow_glass"] = {
description = S("Trap Glow Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_trap_glass.png", "moreblocks_glow_glass_detail.png"},
tiles = {"moreblocks_trap_glass.png"},
tiles = {"default_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#E9CD61"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = 11,
walkable = false,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["super_glow_glass"] = {
description = S("Super Glow Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"},
tiles = {"moreblocks_super_glow_glass.png"},
tiles = {"default_glass.png^[colorize:#FFFF78", "default_glass_detail.png^[colorize:#FFFF78"},
paramtype = "light",
sunlight_propagates = true,
light_source = 15,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
is_ground_content = false,
light_source = default.LIGHT_MAX,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["trap_super_glow_glass"] = {
description = S("Trap Super Glow Glass"),
drawtype = "glasslike_framed_optional",
--tiles = {"moreblocks_trap_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"},
tiles = {"moreblocks_trap_super_glow_glass.png"},
tiles = {"default_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#FFFF78"},
paramtype = "light",
sunlight_propagates = true,
light_source = 15,
is_ground_content = false,
light_source = default.LIGHT_MAX,
walkable = false,
groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
@ -323,6 +438,7 @@ local nodes = {
wield_image = "moreblocks_rope.png",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
paramtype2 = "wallmounted",
walkable = false,
climbable = true,
@ -331,6 +447,12 @@ local nodes = {
sounds = sound_leaves,
no_stairs = true,
},
["copperpatina"] = {
description = S("Copper Patina Block"),
groups = {cracky = 1, level = 2},
is_ground_content = false,
sounds = sound_metal,
},
}
for name, def in pairs(nodes) do
@ -351,22 +473,9 @@ for name, def in pairs(nodes) do
end
end
-- Items
minetest.register_craftitem("moreblocks:sweeper", {
description = S("Sweeper"),
inventory_image = "moreblocks_sweeper.png",
})
minetest.register_craftitem("moreblocks:jungle_stick", {
description = S("Jungle Stick"),
inventory_image = "moreblocks_junglestick.png",
groups = {stick= 1},
})
minetest.register_craftitem("moreblocks:nothing", {
inventory_image = "invisible.png",
on_use = function() end,
})

View File

@ -1,7 +1,7 @@
--[[
More Blocks: ownership handling
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -22,11 +22,11 @@ function moreblocks.node_is_owned(pos, placer)
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
ownername = S("someone")
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
ownername = S("someone")
end

View File

@ -1,7 +1,7 @@
--[[
More Blocks: redefinitions of default stuff
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -25,6 +25,11 @@ minetest.register_craft({
}
})
minetest.clear_craft({
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"}
}
})
minetest.register_craft({
output = "default:paper 4",
recipe = {
@ -45,56 +50,3 @@ minetest.register_craft({
type = "toolrepair",
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

View File

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

View File

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

61
stairsplus/common.lua Normal file
View File

@ -0,0 +1,61 @@
--[[
More Blocks: registrations
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = moreblocks.intllib
stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields)
local descriptions = {
["micro"] = "Microblock",
["slab"] = "Slab",
["slope"] = "Slope",
["panel"] = "Panel",
["stair"] = "Stairs",
}
local def = {}
if category ~= "slab" then
def = table.copy(info)
end
for k, v in pairs(fields) do
def[k] = v
end
def.drawtype = "nodebox"
if category == "slope" then
def.drawtype = "mesh"
end
def.paramtype = "light"
def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
if category ~= "slab" then
def.description = S("%s " .. descriptions[category]):format(fields.description)
else
local desc_base = S("%s " .. descriptions[category]):format(fields.description)
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
end
def.groups = stairsplus:prepare_groups(fields.groups)
if category == "stair" and alternate == "" then
def.groups.stair = 1
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

View File

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

98
stairsplus/custom.lua Normal file
View File

@ -0,0 +1,98 @@
--[[
More Blocks: microblock definitions
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = moreblocks.intllib
--[[
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" },
}
--]]
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 = table.copy(subset)
for k, v in pairs(subset) 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 = table.copy(subset)
for k, v in pairs(subset) 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 = table.copy(subset)
for k, v in pairs(subset) 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

409
stairsplus/defs.lua Normal file
View File

@ -0,0 +1,409 @@
--[[
More Blocks: registrations
Copyright (c) 2011-2018 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

View File

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

View File

@ -1,7 +1,7 @@
--[[
More Blocks: microblock definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -20,119 +20,25 @@ function register_micro(modname, subname, recipeitem, groups, images, descriptio
})
end
function stairsplus:register_micro(modname, subname, recipeitem, fields)
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"] = {
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},
},
}
}
local desc = S("%s Microblock"):format(fields.description)
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
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)
minetest.register_alias(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate)
end
minetest.register_alias(modname.. ":micro_" ..subname.. "_bottom", modname.. ":micro_" ..subname)
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 7",
recipe = {modname .. ":stair_" .. subname .. "_inner"},
})
minetest.register_craft({
output = modname .. ":micro_" .. subname .. " 6",
type = "shapeless",
recipe = {modname .. ":stair_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 5",
recipe = {modname .. ":stair_" .. subname .. "_outer"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":stair_" .. subname .. "_alt"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 3",
recipe = {modname .. ":stair_" .. subname .. "_right_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 2",
recipe = {modname .. ":panel_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
end
function stairsplus:register_micro_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["micro"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":micro_" .. subname_old .. alternate, modname_new .. ":micro_" .. subname_new .. alternate)
end
end
function stairsplus:register_micro(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["micro"])
for alternate, def in pairs(defs) do
stairsplus.register_single("micro", alternate, def, modname, subname, recipeitem, fields)
end
circular_saw.known_nodes[recipeitem] = {modname, subname}
end

View File

@ -1,7 +1,7 @@
--[[
More Blocks: panel definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -20,99 +20,25 @@ function register_panel(modname, subname, recipeitem, groups, images, descriptio
})
end
function stairsplus:register_panel(modname, subname, recipeitem, fields)
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"] = {
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},
},
}
}
local desc = S("%s Panel"):format(fields.description)
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
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)
minetest.register_alias(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate)
end
minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname)
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
minetest.register_craft({
output = modname .. ":panel_" .. subname .. " 12",
recipe = {
{recipeitem, ""},
{recipeitem, recipeitem},
},
})
minetest.register_craft({
output = modname .. ":panel_" .. subname .. " 12",
recipe = {
{"", recipeitem},
{recipeitem, recipeitem},
},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":panel_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
end
function stairsplus:register_panel_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["panel"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":panel_" .. subname_old .. alternate, modname_new .. ":panel_" .. subname_new .. alternate)
end
end
function stairsplus:register_panel(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["panel"])
for alternate, def in pairs(defs) do
stairsplus.register_single("panel", alternate, def, modname, subname, recipeitem, fields)
end
circular_saw.known_nodes[recipeitem] = {modname, subname}
end

443
stairsplus/recipes.lua Normal file
View File

@ -0,0 +1,443 @@
--[[
More Blocks: Stairs+
Copyright (c) 2011-2018 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

View File

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

View File

@ -1,7 +1,7 @@
--[[
More Blocks: slab definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -20,190 +20,26 @@ function register_slab(modname, subname, recipeitem, groups, images, description
})
end
function stairsplus:register_slab(modname, subname, recipeitem, fields)
local defs = {
[""] = 8,
["_quarter"] = 4,
["_three_quarter"] = 12,
["_1"] = 1,
["_2"] = 2,
["_14"] = 14,
["_15"] = 15,
}
local desc_base = S("%s Slab"):format(fields.description)
for alternate, num in pairs(defs) do
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)
function stairsplus:register_slab_alias(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slab"])
for alternate, def in pairs(defs) do
minetest.register_alias(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate)
end
end
function stairsplus:register_slab_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slab"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":slab_" .. subname_old .. alternate, modname_new .. ":slab_" .. subname_new .. alternate)
end
end
function stairsplus:register_slab(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["slab"])
local desc_base = S("%s Slab"):format(fields.description)
for alternate, shape in pairs(defs) do
stairsplus.register_single("slab", alternate, shape, modname, subname, recipeitem, fields)
end
minetest.register_alias("stairs:slab_" .. subname, modname .. ":slab_" .. subname)
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
minetest.register_craft({
output = modname .. ":slab_" .. subname .. " 6",
recipe = {{recipeitem, recipeitem, recipeitem}},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
-- uncomment this rule when conflict is no longer likely to happen
-- https://github.com/minetest/minetest/issues/2881
-- minetest.register_craft({
-- type = "shapeless",
-- output = modname .. ":slab_" .. subname,
-- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
-- })
-- then remove these two
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {{modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}},
})
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {
{modname .. ":panel_" .. subname},
{modname .. ":panel_" .. subname},
},
})
------------------------------
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_2",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_15",
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. " 3",
recipe = {modname .. ":stair_" .. subname, modname .. ":stair_" .. subname},
})
end

View File

@ -1,115 +1,12 @@
--[[
More Blocks: slope definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = moreblocks.intllib
local box_slope = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.25, -0.25, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
}
}
local box_slope_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
{-0.5, -0.25, 0, 0.5, -0.125, 0.5},
{-0.5, -0.125, 0.25, 0.5, 0, 0.5},
}
}
local box_slope_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0, 0.5, 0.375, 0.5},
{-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
}
}
--==============================================================
local box_slope_inner = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.5, -0.25, 0.5, 0, 0.5},
{-0.5, -0.5, -0.5, 0.25, 0, 0.5},
{-0.5, 0, -0.5, 0, 0.25, 0.5},
{-0.5, 0, 0, 0.5, 0.25, 0.5},
{-0.5, 0.25, 0.25, 0.5, 0.5, 0.5},
{-0.5, 0.25, -0.5, -0.25, 0.5, 0.5},
}
}
local box_slope_inner_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
{-0.5, -0.375, -0.5, 0.25, -0.25, 0.5},
{-0.5, -0.25, -0.5, 0, -0.125, 0.5},
{-0.5, -0.25, 0, 0.5, -0.125, 0.5},
{-0.5, -0.125, 0.25, 0.5, 0, 0.5},
{-0.5, -0.125, -0.5, -0.25, 0, 0.5},
}
}
local box_slope_inner_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
{-0.5, 0.125, -0.5, 0.25, 0.25, 0.5},
{-0.5, 0.25, -0.5, 0, 0.375, 0.5},
{-0.5, 0.25, 0, 0.5, 0.375, 0.5},
{-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
{-0.5, 0.375, -0.5, -0.25, 0.5, 0.5},
}
}
--==============================================================
local box_slope_outer = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
{-0.5, -0.25, -0.25, 0.25, 0, 0.5},
{-0.5, 0, 0, 0, 0.25, 0.5},
{-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
}
}
local box_slope_outer_half = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
{-0.5, -0.375, -0.25, 0.25, -0.25, 0.5},
{-0.5, -0.25, 0, 0, -0.125, 0.5},
{-0.5, -0.125, 0.25, -0.25, 0, 0.5}
}
}
local box_slope_outer_half_raised = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
{-0.5, 0.125, -0.25, 0.25, 0.25, 0.5},
{-0.5, 0.25, 0, 0, 0.375, 0.5},
{-0.5, 0.375, 0.25, -0.25, 0.5, 0.5}
}
}
-- Node will be called <modname>:slope_<subname>
function register_slope(modname, subname, recipeitem, groups, images, description, drop, light)
@ -123,225 +20,25 @@ function register_slope(modname, subname, recipeitem, groups, images, descriptio
})
end
function stairsplus:register_slope(modname, subname, recipeitem, fields)
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)
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
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)
minetest.register_alias(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
end
end
function stairsplus:register_slope_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["slope"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":slope_" .. subname_old .. alternate, modname_new .. ":slope_" .. subname_new .. alternate)
end
end
function stairsplus:register_slope(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["slope"])
for alternate, def in pairs(defs) do
stairsplus.register_single("slope", alternate, def, modname, subname, recipeitem, fields)
end
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- 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

View File

@ -1,7 +1,7 @@
--[[
More Blocks: stair definitions
Copyright (c) 2011-2015 Calinou and contributors.
Copyright (c) 2011-2018 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -20,205 +20,25 @@ function register_stair(modname, subname, recipeitem, groups, images, descriptio
})
end
function stairsplus:register_stair(modname, subname, recipeitem, fields)
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"] = {
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},
},
},
},
}
local desc = S("%s Stairs"):format(fields.description)
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
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)
minetest.register_alias(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate)
end
end
function stairsplus:register_stair_alias_force(modname_old, subname_old, modname_new, subname_new)
local defs = table.copy(stairsplus.defs["stair"])
for alternate, def in pairs(defs) do
minetest.register_alias_force(modname_old .. ":stair_" .. subname_old .. alternate, modname_new .. ":stair_" .. subname_new .. alternate)
end
end
function stairsplus:register_stair(modname, subname, recipeitem, fields)
local defs = table.copy(stairsplus.defs["stair"])
for alternate, def in pairs(defs) do
stairsplus.register_single("stair", alternate, def, modname, subname, recipeitem, fields)
end
minetest.register_alias("stairs:stair_" .. subname, modname .. ":stair_" .. subname)
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 8",
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
output = modname .. ":stair_" .. subname .. " 8",
recipe = {
{"", "", recipeitem},
{"", recipeitem, recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_outer",
recipe = {modname .. ":micro_" .. subname, modname .. ":slab_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_half",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_half",
recipe = {modname .. ":panel_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_right_half",
recipe = {modname .. ":stair_" .. subname .. "_half"},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_inner",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname .. "_outer",
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
minetest.register_craft({
type = "shapeless",
output = modname .. ":stair_" .. subname,
recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
})
minetest.register_craft({ -- See mirrored variation of the recipe below.
output = modname .. ":stair_" .. subname .. "_alt",
recipe = {
{modname .. ":panel_" .. subname, ""},
{"" , modname .. ":panel_" .. subname},
},
})
minetest.register_craft({ -- Mirrored variation of the recipe above.
output = modname .. ":stair_" .. subname .. "_alt",
recipe = {
{"" , modname .. ":panel_" .. subname},
{modname .. ":panel_" .. subname, ""},
},
})
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

View File

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

View File

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

View File

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 289 B