39 Commits

Author SHA1 Message Date
4063d917fa Merge remote-tracking branch 'upstream/master' 2021-11-06 09:22:32 +01:00
fe34e3f3cd Fix typo in one of the cactus checker crafting recipes
This typo didn't affect the actual function of the crafting recipe
since `moreblocks:cactuschecker` is aliased to
`moreblocks:cactus_checker`.

This closes #185.
2021-11-01 17:33:38 +01:00
16a6c57954 Merge remote-tracking branch 'upstream/master' 2021-08-31 19:57:52 +02:00
f8a7d66403 Fix circular saw item duplication bug (#173) 2021-08-29 08:23:47 +02:00
e8d219f108 Optional dependency on default mod (#182) 2021-08-26 20:46:07 +02:00
968456defa Fix crash when the node.name does not contain ':' 2021-08-06 21:36:24 +02:00
46d347c00a Avoid crash if place a stair like node on colored one of same categorie 2021-07-18 21:02:35 +02:00
2f211a6545 Merge remote-tracking branch 'upstream/master' 2021-07-03 17:21:31 +02:00
1f1959ba54 Bump to version 2.2.0 2021-06-29 00:41:22 +02:00
07b6dd8bfe Merge remote-tracking branch 'upstream/master' 2021-03-25 21:52:22 +01:00
3b97ea5697 Fix deprecated use of use_texture_alpha (#180)
Co-authored-by: sys4 <bricassa@sys4.fr>
2021-03-20 00:19:35 +01:00
4f3c1bb39d Merge branch 'github' 2021-03-19 23:05:52 +01:00
cbfc442206 Fix deprecated use of use_texture_alpha 2021-03-19 23:02:13 +01:00
4692e88b63 Merge remote-tracking branch 'upstream/master' 2021-03-02 23:54:41 +01:00
bcd1a5688b Update the changelog with recent fixes 2021-02-26 12:06:41 +01:00
1a03b041dd Handle shapeless recipes in redefinitions (#171)
They can be recognized from having width == 0, and don't need the items
list to be massaged to be transformed into the recipe field for the Lua
API.
2021-02-26 12:04:45 +01:00
ea335a3745 Merge remote-tracking branch 'upstream/master' 2021-02-13 14:13:46 +01:00
b39bb31295 Resolve aliases in cost calculation (#175)
If stairs from stairs mod were crafted before moreblocks was enabled, the old (now aliased) stairs variant is kept in inventory. If the player tried to recycle that stair variant, `inv:contains_item("output", stackname)` would return true as `contains_item` resolves alias names, but `circular_saw:get_cost` would return nil as it's expecting exact `stackname` matches which would later crash due to nil arithmetic.

This PR fixes this issue by resolving alias using `minetest.registered_aliases` table.
`circular_saw:get_cost` should work now in every scenario where `inv:contains_item("output", stackname)` returns true.
2021-02-10 17:52:55 +01:00
d4c94f449a Merge remote-tracking branch 'upstream/master' 2021-01-02 14:19:56 +01:00
ddf8b39f5a Realign the rail craft recipes (#169)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-12-30 22:55:52 +01:00
1323e2e993 Merge remote-tracking branch 'upstream/master' 2020-12-30 22:28:05 +01:00
ff7e85094f Fix strange placement behavior for non-default Stairs+ nodes (#168)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-12-28 03:27:58 +01:00
0c2c3ad4ef Add in prepare_groups tree and wool (#128)
Tree for glitch with furnace
Wool  move for more coherence
2020-12-27 19:42:15 +01:00
cc228754a4 Merge remote-tracking branch 'upstream/master' 2020-12-20 16:17:10 +01:00
8a14250127 Fix stairs placement over oddly-shaped nodes (#166) 2020-12-18 17:59:57 +01:00
04a6e0e696 Merge remote-tracking branch 'upstream/master' 2020-12-15 23:37:11 +01:00
cf0f875709 Bump to version 2.1.0 2020-12-14 14:52:04 +01:00
c3b45149b0 Update the changelog with recent fixes 2020-12-14 14:50:02 +01:00
ab91ad967a Improve the placement logic for slabs, etc (#160)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-12-14 14:46:50 +01:00
5aacb05b14 Add Clean (Super) Glow Glass and traps (#159) 2020-12-14 14:44:21 +01:00
87e27d9f20 Refresh built-in crafting recipe overrides (#161) 2020-12-14 14:38:16 +01:00
eb7041d784 Merge remote-tracking branch 'upstream/master' 2020-10-29 22:17:14 +01:00
26ca7af997 Update pre-commit hooks to version 3.3.0 2020-10-28 16:41:16 +01:00
b93949c266 Merge remote-tracking branch 'upstream/master' 2020-10-03 20:57:16 +02:00
3cfff98fc9 Replace Travis CI with GitHub Actions (#158)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-10-02 11:21:10 +02:00
b67028a417 Fix use_texture_alpha warnings since 5.4.0-dev 2020-08-16 10:14:18 +02:00
04810e1f83 Merge remote-tracking branch 'upstream/master' 2020-08-02 14:04:49 +02:00
c081caf494 Add Chinese Translation (#153) 2020-08-01 20:21:55 +02:00
e91b0ea1a0 Fix stairsplus drop for desert_stone bloc 2020-07-13 16:53:41 +02:00
23 changed files with 1046 additions and 119 deletions

24
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,24 @@
name: build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@master
- run: |
sudo apt-get update -qq
sudo apt-get install -qqq luarocks
- name: Install pre-commit
run: pip3 install pre-commit
- name: Install LuaCheck
run: luarocks install --local luacheck
- name: Run LuaCheck using pre-commit
run: |
pre-commit run --all-files
$HOME/.luarocks/bin/luacheck .

View File

@ -1,7 +1,8 @@
repos: repos:
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0 rev: v3.3.0
hooks: hooks:
- id: fix-byte-order-marker
- id: end-of-file-fixer - id: end-of-file-fixer
- id: trailing-whitespace - id: trailing-whitespace

View File

@ -1,15 +0,0 @@
dist: bionic
language: python
python:
- 3.7.1
install:
- sudo apt-get update -qq
- sudo apt-get install -qqq luarocks
- pip3 install pre-commit
- luarocks install --local luacheck
script:
- pre-commit run --all-files
- $HOME/.luarocks/bin/luacheck .

View File

@ -7,15 +7,49 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [Unreleased]
## [2.2.0] - 2021-06-28
### Changed
- Refactored recipe override mechanism to avoid re-coding recipes
when we only want to change the amount produced.
- [Realigned rail recipe to the changes made in Minetest Game.](https://github.com/minetest-mods/moreblocks/pull/169)
- All rail recipes (standard, power, break) were boosted by 50%.
### Fixed
- [Shapeless crafting recipes are now handled in redefinitions.](https://github.com/minetest-mods/moreblocks/pull/171)
- [Aliases are now resolved in Stairs+ circular saw cost calculation.](https://github.com/minetest-mods/moreblocks/pull/175)
- [Fixed strange placement behavior for non-default Stairs+ nodes.](https://github.com/minetest-mods/moreblocks/pull/168)
- [Fixed stairs placement over oddly-shaped nodes.](https://github.com/minetest-mods/moreblocks/pull/166)
## [2.1.0] - 2020-12-14
### Added
- Clean Glass versions of Trap and (Super) Glowing Glass.
- Compressed desert cobblestone.
### Changed
- Revised placing strategy that takes into account which side of the face
(top/bottom for horizontal, left/right for vertical placement) is being clicked.
Aux (sprint/special, default E) key can be used to place the node with the orientation
it would have if placed from the other side.
When placing nodes next to nodes of the same gategory (e.g.slab to slab) the other
node's orientation is copied, flipping it placing on top or below an upright or
upside-down node. In this case the aux key will disable the special processing of
same-category nodes.
### Fixed
- Revised minetest_game crafting recipe overrides to match Minetest 5.0.0 and later.
### Removed ### Removed
- Legacy Stairs+ conversion code. - Legacy Stairs+ conversion code.
- It was only required to import worlds last edited before Q3 2013. - It was only required to import worlds last edited before Q3 2013.
### Added
- Compressed desert cobblestone.
## [2.0.0] - 2019-11-25 ## [2.0.0] - 2019-11-25
### Added ### Added
@ -99,7 +133,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Initial versioned release. - Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v2.0.0...HEAD [Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v2.2.0...HEAD
[2.2.0]: https://github.com/minetest-mods/moreblocks/compare/v2.1.0...v2.2.0
[2.1.0]: https://github.com/minetest-mods/moreblocks/compare/v2.0.0...v2.1.0
[2.0.0]: https://github.com/minetest-mods/moreblocks/compare/v1.3.0...v2.0.0 [2.0.0]: https://github.com/minetest-mods/moreblocks/compare/v1.3.0...v2.0.0
[1.3.0]: https://github.com/minetest-mods/moreblocks/compare/v1.2.0...v1.3.0 [1.3.0]: https://github.com/minetest-mods/moreblocks/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...v1.2.0 [1.2.0]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...v1.2.0

View File

@ -1,4 +1,4 @@
# More Blocks # More Blocks [![Build status](https://github.com/minetest-mods/moreblocks/workflows/build/badge.svg)](https://github.com/minetest-mods/moreblocks/actions)
More Blocks for [Minetest](https://www.minetest.net/), a free and open source infinite More Blocks for [Minetest](https://www.minetest.net/), a free and open source infinite
world block sandbox game. world block sandbox game.
@ -58,7 +58,7 @@ on that line.
## Version compatibility ## Version compatibility
More Blocks is currently primarily tested with Minetest 5.1.0. More Blocks is currently primarily tested with Minetest 5.3.0.
It may or may not work with newer or older versions. Issues arising in older It may or may not work with newer or older versions. Issues arising in older
versions than 5.0.0 will generally not be fixed. versions than 5.0.0 will generally not be fixed.

View File

@ -89,8 +89,9 @@ circular_saw.names = {
} }
function circular_saw:get_cost(inv, stackname) function circular_saw:get_cost(inv, stackname)
local name = minetest.registered_aliases[stackname] or stackname
for i, item in pairs(inv:get_list("output")) do for i, item in pairs(inv:get_list("output")) do
if item:get_name() == stackname then if item:get_name() == name then
return circular_saw.cost_in_microblocks[i] return circular_saw.cost_in_microblocks[i]
end end
end end
@ -336,6 +337,10 @@ function circular_saw.on_metadata_inventory_take(
local input_stack = inv:get_stack(listname, index) local input_stack = inv:get_stack(listname, index)
if not input_stack:is_empty() and input_stack:get_name()~=stack:get_name() then if not input_stack:is_empty() and input_stack:get_name()~=stack:get_name() then
local player_inv = player:get_inventory() local player_inv = player:get_inventory()
-- Prevent arbitrary item duplication.
inv:remove_item(listname, input_stack)
if player_inv:room_for_item("main", input_stack) then if player_inv:room_for_item("main", input_stack) then
player_inv:add_item("main", input_stack) player_inv:add_item("main", input_stack)
end end
@ -362,9 +367,15 @@ function circular_saw.on_metadata_inventory_take(
-- The recycle field plays no role here since it is processed immediately. -- The recycle field plays no role here since it is processed immediately.
end end
local has_default_mod = minetest.get_modpath("default")
function circular_saw.on_construct(pos) function circular_saw.on_construct(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots local fancy_inv = ""
if has_default_mod then
-- prepend background and slot styles from default if available
fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots
end
meta:set_string( meta:set_string(
"formspec", "size[11,10]"..fancy_inv.. "formspec", "size[11,10]"..fancy_inv..
"label[0,0;" ..F(S("Input\nmaterial")).. "]" .. "label[0,0;" ..F(S("Input\nmaterial")).. "]" ..
@ -436,7 +447,7 @@ minetest.register_node("moreblocks:circular_saw", {
sunlight_propagates = true, sunlight_propagates = true,
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {choppy = 2,oddly_breakable_by_hand = 2}, groups = {choppy = 2,oddly_breakable_by_hand = 2},
sounds = default.node_sound_wood_defaults(), sounds = moreblocks.node_sound_wood_defaults(),
on_construct = circular_saw.on_construct, on_construct = circular_saw.on_construct,
can_dig = circular_saw.can_dig, can_dig = circular_saw.can_dig,
-- Set the owner of this circular saw. -- Set the owner of this circular saw.

View File

@ -348,12 +348,36 @@ minetest.register_craft({
recipe = {"moreblocks:sweeper", "default:glass"}, recipe = {"moreblocks:sweeper", "default:glass"},
}) })
minetest.register_craft({
output = "moreblocks:trap_clean_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_glass"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_glass",
type = "shapeless",
recipe = {"moreblocks:sweeper", "moreblocks:trap_glass"},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:glow_glass", output = "moreblocks:glow_glass",
type = "shapeless", type = "shapeless",
recipe = {"default:torch", "default:glass"}, recipe = {"default:torch", "default:glass"},
}) })
minetest.register_craft({
output = "moreblocks:clean_glow_glass",
type = "shapeless",
recipe = {"default:torch", "moreblocks:clean_glass"},
})
minetest.register_craft({
output = "moreblocks:clean_glow_glass",
type = "shapeless",
recipe = {"moreblocks:sweeper", "moreblocks:glow_glass"},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:trap_glow_glass", output = "moreblocks:trap_glow_glass",
type = "shapeless", type = "shapeless",
@ -366,6 +390,26 @@ minetest.register_craft({
recipe = {"default:mese_crystal_fragment", "moreblocks:glow_glass"}, recipe = {"default:mese_crystal_fragment", "moreblocks:glow_glass"},
}) })
-- several recipes are possible for the trap+clean+glow, we only present 3 of them
minetest.register_craft({
output = "moreblocks:trap_clean_glow_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_glow_glass"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_glow_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_glass", "default:torch"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_glow_glass",
type = "shapeless",
recipe = {"moreblocks:sweeper", "moreblocks:trap_glow_glass" },
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:super_glow_glass", output = "moreblocks:super_glow_glass",
type = "shapeless", type = "shapeless",
@ -378,6 +422,24 @@ minetest.register_craft({
recipe = {"default:torch", "moreblocks:glow_glass"}, recipe = {"default:torch", "moreblocks:glow_glass"},
}) })
minetest.register_craft({
output = "moreblocks:clean_super_glow_glass",
type = "shapeless",
recipe = {"default:torch", "default:torch", "moreblocks:clean_glass"},
})
minetest.register_craft({
output = "moreblocks:clean_super_glow_glass",
type = "shapeless",
recipe = {"default:torch", "moreblocks:clean_glow_glass"},
})
minetest.register_craft({
output = "moreblocks:clean_super_glow_glass",
type = "shapeless",
recipe = {"moreblocks:sweeper", "moreblocks:super_glow_glass"},
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:trap_super_glow_glass", output = "moreblocks:trap_super_glow_glass",
@ -391,6 +453,32 @@ minetest.register_craft({
recipe = {"default:mese_crystal_fragment", "moreblocks:super_glow_glass"}, recipe = {"default:mese_crystal_fragment", "moreblocks:super_glow_glass"},
}) })
-- several recipes are possible for the trap+clean+glow, we only present 4 of them
minetest.register_craft({
output = "moreblocks:trap_clean_super_glow_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_super_glow_glass"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_super_glow_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_glow_glass", "default:torch"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_super_glow_glass",
type = "shapeless",
recipe = {"default:mese_crystal_fragment", "moreblocks:clean_glass", "default:torch", "default:torch"},
})
minetest.register_craft({
output = "moreblocks:trap_clean_super_glow_glass",
type = "shapeless",
recipe = {"moreblocks:sweeper", "moreblocks:trap_super_glow_glass" },
})
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:coal_stone", output = "moreblocks:coal_stone",
type = "shapeless", type = "shapeless",
@ -466,7 +554,7 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "moreblocks:cactuschecker 4", output = "moreblocks:cactus_checker 4",
recipe = { recipe = {
{"default:stone", "default:cactus"}, {"default:stone", "default:cactus"},
{"default:cactus", "default:stone"}, {"default:cactus", "default:stone"},

View File

@ -17,10 +17,14 @@ moreblocks.S = S
moreblocks.NS = NS moreblocks.NS = NS
dofile(modpath .. "/config.lua") dofile(modpath .. "/config.lua")
dofile(modpath .. "/sounds.lua")
dofile(modpath .. "/circular_saw.lua") dofile(modpath .. "/circular_saw.lua")
dofile(modpath .. "/stairsplus/init.lua") dofile(modpath .. "/stairsplus/init.lua")
dofile(modpath .. "/nodes.lua")
dofile(modpath .. "/crafting.lua") if minetest.get_modpath("default") then
dofile(modpath .. "/aliases.lua") dofile(modpath .. "/nodes.lua")
dofile(modpath .. "/crafting.lua")
dofile(modpath .. "/aliases.lua")
end
minetest.log("action", "[moreblocks] loaded.") minetest.log("action", "[moreblocks] loaded.")

288
locale/zh_CN.po Normal file
View File

@ -0,0 +1,288 @@
# Template translation for More Blocks.
# Copyright © 2011-2020 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# IFRFSX <IFRFSX@protonmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "圆锯"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"输入\n"
"材料"
#: circular_saw.lua
msgid "Left-over"
msgstr "剩余材料"
#: circular_saw.lua
msgid "Max"
msgstr "最大值"
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"回收\n"
"输出物"
#: circular_saw.lua
msgid "Set"
msgstr "设置"
#: circular_saw.lua
msgid "owned by @1"
msgstr "属于@1所有"
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "圆锯是空的"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "圆锯正在加工@1"
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] 已加载"
#: nodes.lua
msgid "Deprecated"
msgstr "弃用"
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr "全切面相思树木方块"
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr "全切面白杨树木方块"
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr "全切面丛林树木方块"
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr "全切面松树木方块"
#: nodes.lua
msgid "All-faces Tree"
msgstr "全切面树木方块"
#: nodes.lua
msgid "Cactus Brick"
msgstr "仙人掌砖"
#: nodes.lua
msgid "Cactus Checker"
msgstr "仙人掌棋盘方块"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "居中的木瓦"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr "棋盘石瓦"
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "圆石砖"
#: nodes.lua
msgid "Clean Glass"
msgstr "干净的玻璃"
#: nodes.lua
msgid "Coal Checker"
msgstr "棋盘煤块"
#: nodes.lua
msgid "Coal Glass"
msgstr "煤玻璃"
#: nodes.lua
msgid "Coal Stone"
msgstr "煤炭石"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "煤炭石砖"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr "压缩圆石"
#: nodes.lua
msgid "Compressed Dirt"
msgstr "压缩土"
#: nodes.lua
msgid "Copper Patina Block"
msgstr "铜绿方块"
#: nodes.lua
msgid "Empty Shelf"
msgstr "空书架"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "全木瓦"
#: nodes.lua
msgid "Glow Glass"
msgstr "发光玻璃"
#: nodes.lua
msgid "Iron Checker"
msgstr "棋盘铁方块"
#: nodes.lua
msgid "Iron Glass"
msgstr "铁玻璃"
#: nodes.lua
msgid "Iron Stone"
msgstr "铁石"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "铁石砖"
#: nodes.lua
msgid "Plankstone"
msgstr "板石"
#: nodes.lua
msgid "Rope"
msgstr "绳子"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "裂石砖"
#: nodes.lua
msgid "Stone Bricks"
msgstr "石砖"
#: nodes.lua
msgid "Stone Tile"
msgstr "石瓦"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "超级发光玻璃"
#: nodes.lua
msgid "Sweeper"
msgstr "清扫器"
#: nodes.lua
msgid "Tar"
msgstr "焦油"
#: nodes.lua
msgid "Trap Desert Stone"
msgstr "陷阱沙漠石"
#: nodes.lua
msgid "Trap Glass"
msgstr "陷阱玻璃"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "陷阱发光玻璃"
#: nodes.lua
msgid "Trap Obsidian"
msgstr "陷阱黑耀石"
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr "陷阱黑耀石玻璃"
#: nodes.lua
msgid "Trap Sandstone"
msgstr "陷阱沙石"
#: nodes.lua
msgid "Trap Stone"
msgstr "陷阱石"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "陷阱超级发光玻璃"
#: nodes.lua
msgid "Wooden Tile"
msgstr "木瓦"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr "胶合木瓦"
# @deprecated
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr "向下的木瓦"
# @deprecated
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr "向左的木瓦"
# @deprecated
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr "向右的木瓦"
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "抱歉,那个位置是@1的。"
#: ownership.lua
msgid "someone"
msgstr "某人"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "%s 小方块"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "%s 台阶"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr "%s 斜坡"
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "%s 嵌板"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "%s 楼梯"

288
locale/zh_TW.po Normal file
View File

@ -0,0 +1,288 @@
# Template translation for More Blocks.
# Copyright © 2011-2020 Hugo Locurcio and contributors
# This file is distributed under the same license as the More Blocks package.
# IFRFSX <IFRFSX@protonmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: More Blocks\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-13 12:37+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: circular_saw.lua
msgid "Circular Saw"
msgstr "圓鋸"
#: circular_saw.lua
msgid ""
"Input\n"
"material"
msgstr ""
"輸入\n"
"材料"
#: circular_saw.lua
msgid "Left-over"
msgstr "剩餘材料"
#: circular_saw.lua
msgid "Max"
msgstr "最大值"
#: circular_saw.lua
msgid ""
"Recycle\n"
"output"
msgstr ""
"回收\n"
"輸出物"
#: circular_saw.lua
msgid "Set"
msgstr "設置"
#: circular_saw.lua
msgid "owned by @1"
msgstr "屬於@1所有"
#: circular_saw.lua
msgid "Circular Saw is empty"
msgstr "圓鋸是空的"
#: circular_saw.lua
msgid "Circular Saw is working on @1"
msgstr "圓鋸正在加工@1"
#: init.lua
msgid "[moreblocks] loaded."
msgstr "[moreblocks] 已加載"
#: nodes.lua
msgid "Deprecated"
msgstr "棄用"
#: nodes.lua
msgid "All-faces Acacia Tree"
msgstr "全切面相思樹木方塊"
#: nodes.lua
msgid "All-faces Aspen Tree"
msgstr "全切面白楊樹木方塊"
#: nodes.lua
msgid "All-faces Jungle Tree"
msgstr "全切面叢林樹木方塊"
#: nodes.lua
msgid "All-faces Pine Tree"
msgstr "全切面松樹木方塊"
#: nodes.lua
msgid "All-faces Tree"
msgstr "全切面樹木方塊"
#: nodes.lua
msgid "Cactus Brick"
msgstr "仙人掌磚"
#: nodes.lua
msgid "Cactus Checker"
msgstr "仙人掌棋盤方塊"
#: nodes.lua
msgid "Centered Wooden Tile"
msgstr "居中的木瓦"
#: nodes.lua
msgid "Checker Stone Tile"
msgstr "棋盤石瓦"
#: nodes.lua
msgid "Circle Stone Bricks"
msgstr "圓石磚"
#: nodes.lua
msgid "Clean Glass"
msgstr "乾淨的玻璃"
#: nodes.lua
msgid "Coal Checker"
msgstr "棋盤煤塊"
#: nodes.lua
msgid "Coal Glass"
msgstr "煤玻璃"
#: nodes.lua
msgid "Coal Stone"
msgstr "煤炭石"
#: nodes.lua
msgid "Coal Stone Bricks"
msgstr "煤炭石磚"
#: nodes.lua
msgid "Compressed Cobblestone"
msgstr "壓縮圓石"
#: nodes.lua
msgid "Compressed Dirt"
msgstr "壓縮土"
#: nodes.lua
msgid "Copper Patina Block"
msgstr "銅綠方塊"
#: nodes.lua
msgid "Empty Shelf"
msgstr "空書架"
#: nodes.lua
msgid "Full Wooden Tile"
msgstr "全木瓦"
#: nodes.lua
msgid "Glow Glass"
msgstr "發光玻璃"
#: nodes.lua
msgid "Iron Checker"
msgstr "棋盤鐵方塊"
#: nodes.lua
msgid "Iron Glass"
msgstr "鐵玻璃"
#: nodes.lua
msgid "Iron Stone"
msgstr "鐵石"
#: nodes.lua
msgid "Iron Stone Bricks"
msgstr "鐵石磚"
#: nodes.lua
msgid "Plankstone"
msgstr "板石"
#: nodes.lua
msgid "Rope"
msgstr "繩子"
#: nodes.lua
msgid "Split Stone Tile"
msgstr "裂石磚"
#: nodes.lua
msgid "Stone Bricks"
msgstr "石磚"
#: nodes.lua
msgid "Stone Tile"
msgstr "石瓦"
#: nodes.lua
msgid "Super Glow Glass"
msgstr "超級發光玻璃"
#: nodes.lua
msgid "Sweeper"
msgstr "清掃器"
#: nodes.lua
msgid "Tar"
msgstr "焦油"
#: nodes.lua
msgid "Trap Desert Stone"
msgstr "陷阱沙漠石"
#: nodes.lua
msgid "Trap Glass"
msgstr "陷阱玻璃"
#: nodes.lua
msgid "Trap Glow Glass"
msgstr "陷阱發光玻璃"
#: nodes.lua
msgid "Trap Obsidian"
msgstr "陷阱黑耀石"
#: nodes.lua
msgid "Trap Obsidian Glass"
msgstr "陷阱黑耀石玻璃"
#: nodes.lua
msgid "Trap Sandstone"
msgstr "陷阱沙石"
#: nodes.lua
msgid "Trap Stone"
msgstr "陷阱石"
#: nodes.lua
msgid "Trap Super Glow Glass"
msgstr "陷阱超級發光玻璃"
#: nodes.lua
msgid "Wooden Tile"
msgstr "木瓦"
#: nodes.lua
msgid "Offset Wooden Tile"
msgstr "膠合木瓦"
# @deprecated
#: nodes.lua
msgid "Downwards Wooden Tile"
msgstr "向下的木瓦"
# @deprecated
#: nodes.lua
msgid "Leftwards Wooden Tile"
msgstr "向左的木瓦"
# @deprecated
#: nodes.lua
msgid "Rightwards Wooden Tile"
msgstr "向右的木瓦"
#: ownership.lua
msgid "Sorry, @1 owns that spot."
msgstr "抱歉,那個位置是@1的。"
#: ownership.lua
msgid "someone"
msgstr "某人"
#: stairsplus/common.lua
#, lua-format
msgid "%s Microblock"
msgstr "%s 小方塊"
#: stairsplus/common.lua stairsplus/slabs.lua
#, lua-format
msgid "%s Slab"
msgstr "%s 臺階"
#: stairsplus/common.lua
#, lua-format
msgid "%s Slope"
msgstr "%s 斜坡"
#: stairsplus/common.lua
#, lua-format
msgid "%s Panel"
msgstr "%s 嵌板"
#: stairsplus/common.lua
#, lua-format
msgid "%s Stairs"
msgstr "%s 樓梯"

View File

@ -1,5 +1,4 @@
name = moreblocks name = moreblocks
description = Adds various miscellaneous blocks to the game. description = Adds various miscellaneous blocks to the game.
depends = default optional_depends = default,intllib,stairs,farming,wool,basic_materials
optional_depends = intllib,stairs,farming,wool,basic_materials
min_minetest_version = 5.0.0 min_minetest_version = 5.0.0

View File

@ -7,15 +7,15 @@ Licensed under the zlib license. See LICENSE.md for more information.
local S = moreblocks.S local S = moreblocks.S
local sound_dirt = default.node_sound_dirt_defaults() local sound_dirt = moreblocks.node_sound_dirt_defaults()
local sound_wood = default.node_sound_wood_defaults() local sound_wood = moreblocks.node_sound_wood_defaults()
local sound_stone = default.node_sound_stone_defaults() local sound_stone = moreblocks.node_sound_stone_defaults()
local sound_glass = default.node_sound_glass_defaults() local sound_glass = moreblocks.node_sound_glass_defaults()
local sound_leaves = default.node_sound_leaves_defaults() local sound_leaves = moreblocks.node_sound_leaves_defaults()
-- Don't break on 0.4.14 and earlier. -- Don't break on 0.4.14 and earlier.
local sound_metal = (default.node_sound_metal_defaults local sound_metal = (moreblocks.node_sound_metal_defaults
and default.node_sound_metal_defaults() or sound_stone) and moreblocks.node_sound_metal_defaults() or sound_stone)
local function tile_tiles(name) local function tile_tiles(name)
local tex = "moreblocks_" ..name.. ".png" local tex = "moreblocks_" ..name.. ".png"
@ -194,6 +194,7 @@ local nodes = {
description = S("Iron Glass"), description = S("Iron Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#DEDEDE", "default_glass_detail.png^[colorize:#DEDEDE"}, tiles = {"default_glass.png^[colorize:#DEDEDE", "default_glass_detail.png^[colorize:#DEDEDE"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -204,6 +205,7 @@ local nodes = {
description = S("Coal Glass"), description = S("Coal Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#828282", "default_glass_detail.png^[colorize:#828282"}, tiles = {"default_glass.png^[colorize:#828282", "default_glass_detail.png^[colorize:#828282"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -214,6 +216,7 @@ local nodes = {
description = S("Clean Glass"), description = S("Clean Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"}, tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -313,6 +316,7 @@ local nodes = {
description = S("Trap Glass"), description = S("Trap Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^moreblocks_trap_box_glass.png", "default_glass_detail.png"}, tiles = {"default_glass.png^moreblocks_trap_box_glass.png", "default_glass_detail.png"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -325,6 +329,7 @@ local nodes = {
description = S("Trap Obsidian Glass"), description = S("Trap Obsidian Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_obsidian_glass.png^moreblocks_trap_box_glass.png", "default_obsidian_glass_detail.png"}, tiles = {"default_obsidian_glass.png^moreblocks_trap_box_glass.png", "default_obsidian_glass_detail.png"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -344,6 +349,19 @@ local nodes = {
sounds = sound_stone, sounds = sound_stone,
no_stairs = true, no_stairs = true,
}, },
["trap_clean_glass"] = {
description = S("Trap Clean Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png^moreblocks_trap_box_glass.png", "moreblocks_clean_glass_detail.png"},
use_texture_alpha = "clip",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["trap_sandstone"] = { ["trap_sandstone"] = {
description = S("Trap Sandstone"), description = S("Trap Sandstone"),
drawtype = "glasslike_framed", drawtype = "glasslike_framed",
@ -394,6 +412,19 @@ local nodes = {
description = S("Glow Glass"), description = S("Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#E9CD61", "default_glass_detail.png^[colorize:#E9CD61"}, tiles = {"default_glass.png^[colorize:#E9CD61", "default_glass_detail.png^[colorize:#E9CD61"},
use_texture_alpha = "clip",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = 11,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["clean_glow_glass"] = {
description = S("Clean Glow Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png^[colorize:#E9CD61", "moreblocks_clean_glass_detail.png^[colorize:#E9CD61"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -405,6 +436,21 @@ local nodes = {
description = S("Trap Glow Glass"), description = S("Trap Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#E9CD61"}, tiles = {"default_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#E9CD61"},
use_texture_alpha = "clip",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = 11,
walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["trap_clean_glow_glass"] = {
description = S("Trap Clean Glow Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png^[colorize:#E9CD61^moreblocks_trap_box_glass.png", "moreblocks_clean_glass_detail.png^[colorize:#E9CD61"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -418,6 +464,19 @@ local nodes = {
description = S("Super Glow Glass"), description = S("Super Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#FFFF78", "default_glass_detail.png^[colorize:#FFFF78"}, tiles = {"default_glass.png^[colorize:#FFFF78", "default_glass_detail.png^[colorize:#FFFF78"},
use_texture_alpha = "clip",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = default.LIGHT_MAX,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
},
["clean_super_glow_glass"] = {
description = S("Clean Super Glow Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png^[colorize:#FFFF78", "moreblocks_clean_glass_detail.png^[colorize:#FFFF78"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
@ -429,6 +488,21 @@ local nodes = {
description = S("Trap Super Glow Glass"), description = S("Trap Super Glow Glass"),
drawtype = "glasslike_framed_optional", drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#FFFF78"}, tiles = {"default_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "default_glass_detail.png^[colorize:#FFFF78"},
use_texture_alpha = "clip",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
light_source = default.LIGHT_MAX,
walkable = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = sound_glass,
no_stairs = true,
},
["trap_clean_super_glow_glass"] = {
description = S("Trap Clean Super Glow Glass"),
drawtype = "glasslike_framed_optional",
tiles = {"moreblocks_clean_glass.png^[colorize:#FFFF78^moreblocks_trap_box_glass.png", "moreblocks_clean_glass_detail.png^[colorize:#FFFF78"},
use_texture_alpha = "clip",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,

20
sounds.lua Normal file
View File

@ -0,0 +1,20 @@
--[[
More Blocks: sound definitions
Copyright © 2011-2021 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local has_default_mod = minetest.get_modpath("default")
for _, sound in ipairs({"dirt", "wood", "stone", "metal", "glass", "leaves"}) do
-- use sound-function from default if available
-- otherwise fall back to a no-op function (no sounds)
local sound_function_name = "node_sound_" .. sound .. "_defaults"
if has_default_mod then
-- use default sounds
moreblocks[sound_function_name] = default[sound_function_name]
else
-- no-op
moreblocks[sound_function_name] = function() end
end
end

View File

@ -10,7 +10,7 @@
description = "Wooden", description = "Wooden",
tiles = {"default_wood.png"}, tiles = {"default_wood.png"},
groups = {oddly_breakabe_by_hand=1}, groups = {oddly_breakabe_by_hand=1},
sounds = default.node_sound_wood_defaults(), sounds = moreblocks.node_sound_wood_defaults(),
}) })
``` ```
The following register only a particular type of microblock. The following register only a particular type of microblock.

View File

@ -15,7 +15,114 @@ local descriptions = {
["stair"] = S("%s Stairs"), ["stair"] = S("%s Stairs"),
} }
-- Extends the standad rotate_node placement so that it takes into account
-- the side (top/bottom or left/right) of the face being pointed at.
-- As with the standard rotate_node, sneak can be used to force the perpendicular
-- placement (wall placement on floor/ceiling, floor/ceiling placement on walls).
-- Additionally, the aux / sprint / special key can be used to place the node
-- as if from the opposite side.
--
-- When placing a node next to one of the same category (e.g. slab to slab or
-- stair to stair), the default placement (regardless of sneak) is to copy the
-- under node's param2, flipping if placed above or below it. The aux key disable
-- this behavior.
local wall_right_dirmap = {9, 18, 7, 12}
local wall_left_dirmap = {11, 16, 5, 14}
local ceil_dirmap = {20, 23, 22, 21}
-- extract the stairsplus category from a node name
-- assumes the name is in the form mod_name:category_original_ndoe_name
local function name_to_category(name)
local colon = name:find(":") or 0
colon = colon + 1
local under = name:find("_", colon)
return name:sub(colon, under)
end
stairsplus.rotate_node_aux = function(itemstack, placer, pointed_thing)
local sneak = placer and placer:get_player_control().sneak
local aux = placer and placer:get_player_control().aux1
-- category for what we are placing
local item_prefix = name_to_category(itemstack:get_name())
-- category for what we are placing against
local under = pointed_thing.under
local under_node = minetest.get_node(under)
local under_prefix = under_node and name_to_category(under_node.name)
-- NALC Addition to avoid coloredwood/unifiedbricks crash by Sys4
local under_pmod = string.sub(under_node.name, 1, (string.find(under_node.name, ":") or 0)-1)
local same_cat = item_prefix == under_prefix
-- standard (floor) facedir, also used for sneak placement against the lower half of the wall
local p2 = placer and minetest.dir_to_facedir(placer:get_look_dir()) or 0
-- check which face and which quadrant we are interested in
-- this is used both to check if we're handling parallel placement in the same-category case,
-- and in general for sneak placement
local face_pos = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
local face_off = vector.subtract(face_pos, under)
-- we cannot trust face_off to tell us the correct directionif the
-- under node has a non-standard shape, so use the distance between under and above
local wallmounted = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.above, under))
if same_cat and (under_pmod ~= "coloredwood" and under_pmod ~= "unifiedbricks")
and not aux then
p2 = under_node.param2
-- flip if placing above or below an upright or upside-down node
-- TODO should we also flip when placing next to a side-mounted node?
if wallmounted < 2 then
if p2 < 4 then
p2 = (p2 + 2) % 4
p2 = ceil_dirmap[p2 + 1]
elseif p2 > 19 then
p2 = ceil_dirmap[p2 - 19] - 20
p2 = (p2 + 2) % 4
end
end
else
-- for same-cat placement, aux is used to disable param2 copying
if same_cat then
aux = not aux
end
local remap = nil
-- standard placement against the wall
local use_wallmap = (wallmounted > 1 and not sneak) or (wallmounted < 2 and sneak)
-- standard placement against the ceiling, or sneak placement against the upper half of the wall
local use_ceilmap = wallmounted == 1 and not sneak
use_ceilmap = use_ceilmap or (wallmounted > 1 and sneak and face_off.y > 0)
if use_wallmap then
local left = (p2 == 0 and face_off.x < 0) or
(p2 == 1 and face_off.z > 0) or
(p2 == 2 and face_off.x > 0) or
(p2 == 3 and face_off.z < 0)
if aux then
left = not left
end
remap = left and wall_left_dirmap or wall_right_dirmap
elseif use_ceilmap then
remap = ceil_dirmap
end
if aux then
p2 = (p2 + 2) % 4
end
if remap then
p2 = remap[p2 + 1]
end
end
return minetest.item_place(itemstack, placer, pointed_thing, p2)
end
stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields) stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields)
local src_def = minetest.registered_nodes[recipeitem] or {}
local desc_base = descriptions[category]:format(fields.description) local desc_base = descriptions[category]:format(fields.description)
local def = {} local def = {}
@ -31,6 +138,9 @@ stairsplus.register_single = function(category, alternate, info, modname, subnam
def.drawtype = "nodebox" def.drawtype = "nodebox"
def.paramtype = "light" def.paramtype = "light"
def.paramtype2 = def.paramtype2 or "facedir" def.paramtype2 = def.paramtype2 or "facedir"
if def.use_texture_alpha == nil then
def.use_texture_alpha = src_def.use_texture_alpha
end
-- This makes node rotation work on placement -- This makes node rotation work on placement
def.place_param2 = nil def.place_param2 = nil
@ -38,7 +148,7 @@ stairsplus.register_single = function(category, alternate, info, modname, subnam
-- Darken light sources slightly to make up for their smaller visual size -- Darken light sources slightly to make up for their smaller visual size
def.light_source = math.max(0, (def.light_source or 0) - 1) def.light_source = math.max(0, (def.light_source or 0) - 1)
def.on_place = minetest.rotate_node def.on_place = stairsplus.rotate_node_aux
def.groups = stairsplus:prepare_groups(fields.groups) def.groups = stairsplus:prepare_groups(fields.groups)
if category == "slab" then if category == "slab" then

View File

@ -69,7 +69,7 @@ local function register_custom_subset(subset, modname, subname, recipeitem, grou
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end

View File

@ -25,7 +25,7 @@ function stairsplus:prepare_groups(groups)
local result = {} local result = {}
if groups then if groups then
for k, v in pairs(groups) do for k, v in pairs(groups) do
if k ~= "wood" and k ~= "stone" then if k ~= "wood" and k ~= "stone" and k ~= "wool" and k ~= "tree" then
result[k] = v result[k] = v
end end
end end

View File

@ -15,7 +15,7 @@ local function register_micro(modname, subname, recipeitem, groups, images, desc
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end

View File

@ -15,7 +15,7 @@ local function register_panel(modname, subname, recipeitem, groups, images, desc
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end

View File

@ -6,75 +6,77 @@ Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
-- default registrations -- default registrations
local default_nodes = { -- Default stairs/slabs/panels/microblocks: if minetest.get_modpath("default") then
"stone", local default_nodes = { -- Default stairs/slabs/panels/microblocks:
"stone_block", "stone",
"cobble", "stone_block",
"mossycobble", "cobble",
"brick", "mossycobble",
"sandstone", "brick",
"steelblock", "sandstone",
"goldblock", "steelblock",
"copperblock", "goldblock",
"bronzeblock", "copperblock",
"diamondblock", "bronzeblock",
"tinblock", "diamondblock",
"desert_stone", "tinblock",
"desert_stone_block", "desert_stone",
"desert_cobble", "desert_stone_block",
"meselamp", "desert_cobble",
"glass", "meselamp",
"tree", "glass",
"wood", "tree",
"jungletree", "wood",
"junglewood", "jungletree",
"pine_tree", "junglewood",
"pine_wood", "pine_tree",
"acacia_tree", "pine_wood",
"acacia_wood", "acacia_tree",
"aspen_tree", "acacia_wood",
"aspen_wood", "aspen_tree",
"obsidian", "aspen_wood",
"obsidian_block", "obsidian",
"obsidianbrick", "obsidian_block",
"obsidian_glass", "obsidianbrick",
"stonebrick", "obsidian_glass",
"desert_stonebrick", "stonebrick",
"sandstonebrick", "desert_stonebrick",
"silver_sandstone", "sandstonebrick",
"silver_sandstone_brick", "silver_sandstone",
"silver_sandstone_block", "silver_sandstone_brick",
"desert_sandstone", "silver_sandstone_block",
"desert_sandstone_brick", "desert_sandstone",
"desert_sandstone_block", "desert_sandstone_brick",
"sandstone_block", "desert_sandstone_block",
"coral_skeleton", "sandstone_block",
"ice", "coral_skeleton",
} "ice",
}
for _, name in pairs(default_nodes) do for _, name in pairs(default_nodes) do
local mod = "default" local mod = "default"
local nodename = mod .. ":" .. name local nodename = mod .. ":" .. name
local ndef = table.copy(minetest.registered_nodes[nodename]) local ndef = table.copy(minetest.registered_nodes[nodename])
ndef.sunlight_propagates = true ndef.sunlight_propagates = true
-- Stone and desert_stone drop cobble and desert_cobble respectively. -- Stone and desert_stone drop cobble and desert_cobble respectively.
if type(ndef.drop) == "string" then if type(ndef.drop) == "string" then
ndef.drop = ndef.drop:gsub(".+:", "") ndef.drop = ndef.drop:gsub(".+:", "")
end
-- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2.
if #ndef.tiles > 1 and ndef.drawtype and ndef.drawtype:find("glass") then
ndef.tiles = {ndef.tiles[1]}
ndef.paramtype2 = nil
end
mod = "moreblocks"
stairsplus:register_all(mod, name, nodename, ndef)
minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
end end
-- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2.
if #ndef.tiles > 1 and ndef.drawtype and ndef.drawtype:find("glass") then
ndef.tiles = {ndef.tiles[1]}
ndef.paramtype2 = nil
end
mod = "moreblocks"
stairsplus:register_all(mod, name, nodename, ndef)
minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
end end
-- farming registrations -- farming registrations
@ -106,9 +108,6 @@ if minetest.get_modpath("wool") then
local ndef = table.copy(minetest.registered_nodes[nodename]) local ndef = table.copy(minetest.registered_nodes[nodename])
ndef.sunlight_propagates = true 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) stairsplus:register_all(mod, name, nodename, ndef)
end end
end end
@ -121,7 +120,7 @@ if minetest.get_modpath("basic_materials") then
description = "Concrete", description = "Concrete",
tiles = {"basic_materials_concrete_block.png",}, tiles = {"basic_materials_concrete_block.png",},
groups = {cracky=1, level=2, concrete=1}, groups = {cracky=1, level=2, concrete=1},
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
minetest.register_alias("prefab:concrete_stair","technic:stair_concrete") minetest.register_alias("prefab:concrete_stair","technic:stair_concrete")
@ -131,7 +130,7 @@ if minetest.get_modpath("basic_materials") then
description = "Cement", description = "Cement",
tiles = {"basic_materials_cement_block.png"}, tiles = {"basic_materials_cement_block.png"},
groups = {cracky=2, not_in_creative_inventory=1}, groups = {cracky=2, not_in_creative_inventory=1},
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
sunlight_propagates = true, sunlight_propagates = true,
}) })

View File

@ -15,7 +15,7 @@ local function register_slab(modname, subname, recipeitem, groups, images, descr
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end

View File

@ -15,7 +15,7 @@ local function register_slope(modname, subname, recipeitem, groups, images, desc
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end

View File

@ -15,7 +15,7 @@ local function register_stair(modname, subname, recipeitem, groups, images, desc
description = description, description = description,
drop = drop, drop = drop,
light_source = light, light_source = light,
sounds = default.node_sound_stone_defaults(), sounds = moreblocks.node_sound_stone_defaults(),
}) })
end end