Compare commits

...

42 Commits

Author SHA1 Message Date
David Leal b9e69b70c4
Use old Travis CI configurations in GitHub Actions (#36) 2023-09-09 17:26:38 +02:00
David Leal ce8a6aec22
Fix nodenames in the docs (#35)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2023-04-22 16:50:01 +02:00
David Leal 1949d88b06
Fix alpha texture warnings (#34) 2022-12-29 20:32:42 +01:00
fluxionary 2100ca04b1
Make all nodes un-blastable, increase stack size to 65535 (#32) 2022-07-02 23:07:53 +02:00
Dirkfried f3464f5063
Increase the Admin Pickaxe's `maxlevel` to 5 (#30)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2022-01-04 19:48:04 +01:00
Hugo Locurcio d1134c47af
Link to the pull request disabling coin crafting in the changelog 2021-06-29 00:44:54 +02:00
Hugo Locurcio e3ca31cdb9
Bump to version 2.2.0 2021-06-29 00:33:43 +02:00
AliasAlreadyTaken 9915ec1852
Disable crafting recipes for coins by default
Crafting recipes for coins can be enabled again by setting
`maptools.enable_coin_crafting = true` in `minetest.conf`.
2021-06-29 00:31:32 +02:00
Buckaroo Banzai fd9476c173
Fix node name for light-bulb in docs (#26)
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-12-20 21:36:53 +01:00
Hugo Locurcio d11b3a1caf
Update pre-commit hooks to version 3.3.0 2020-10-28 16:43:45 +01:00
Hugo Locurcio 800e07ee02
Fix incorrect node name for `smoke` in the documentation
See #24.
2020-09-27 13:00:53 +02:00
Hugo Locurcio 3e29d8a156
Align the Description table heading to the left on GitHub 2020-08-10 22:54:56 +02:00
Hugo Locurcio c76256b805
Fix link to nodes/items documentation in the README 2020-08-10 22:54:18 +02:00
Hugo Locurcio e2099cf9ea
Update the changelog to mention recent changes 2020-08-10 22:53:32 +02:00
fluxionary 911ad7b156
Prevent TNT from blowing up Map Tools nodes (#23)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2020-08-10 22:52:22 +02:00
David Leal 409cca2699
Switch from Travis CI to GitHub Actions (#20) 2020-07-18 19:43:43 +02:00
Hugo Locurcio b537954edf
Bump to version 2.1.0 2020-06-08 21:50:14 +02:00
Hugo Locurcio 7cce8f495f
Update the changelog to mention the localization system change 2020-06-08 21:48:57 +02:00
David Leal 75d3253c5f
Update translation system to MT 5.0.0+ (#16) 2020-06-08 21:48:04 +02:00
Hugo Locurcio 246d525c20
Fix `maptools:drowning` using an invalid value and being walkable
This prevented Minetest from starting (tested on
Minetest 5.3.0-dev-cb9a44ef8).

Being walkable also made it impossible to actually drown in, except
when using noclip mode.
2020-06-08 21:44:49 +02:00
Hugo Locurcio f9bf6a0951
Declare the minimum supported Minetest version to 5.0.0
This information can be used by ContentDB.
2020-06-03 18:55:41 +02:00
Buckaroo Banzai 235e02b0be
Add `maptools` to the list of Luacheck globals (#19)
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
2020-06-02 09:37:18 +02:00
Buckaroo Banzai e6f61c31ce
Add "Drownable Air" node (`maptools:drowning`) (#18)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
2020-06-02 09:13:24 +02:00
Hugo Locurcio 4683434e0a
Update the changelog to mention recent changes around coins 2020-04-29 17:38:34 +02:00
Hugo Locurcio f0d25e85ad
Fix code style after recent changes 2020-04-29 17:36:31 +02:00
VanessaE caa92be9dd add recipes for copper, silver, gold coins
and put them into the creative inv like normal
(silver requires moreores)
2020-04-29 17:34:38 +02:00
Hugo Locurcio 40f840dd33
Remove obsolete notice about renaming the extracted mod folder
This is no longer required thanks to `mod.conf`.
2020-01-01 17:55:36 +01:00
Hugo Locurcio ae3cc4b075
Update copyright statements to 2020 2020-01-01 04:10:24 +01:00
Hugo Locurcio 1b7be03956
Bump to version 2.0.0 2019-11-25 13:51:18 +01:00
Hugo Locurcio 0e30357190
Link to the WorldEdit mod in NODES_ITEMS.md 2019-10-13 14:15:25 +02:00
Hugo Locurcio ccf94fb78b
Make inventory images use textures available in Minetest Game 5.0.0
This closes #9.
2019-10-13 14:13:10 +02:00
Hugo Locurcio f0a3d58a99
Update changelog to mention nodes/items not being droppable anymore 2019-10-04 00:23:02 +02:00
Ragulan R ea85b3e073 Move maptools.drop_msg above dofiles
Maptools tools/items have become droppable again, the function to prevent this is loaded after nodes.lua, leading the on_drop function to be nil.
2019-10-04 00:21:18 +02:00
Hugo Locurcio fa62966bbe
Update pre-commit hooks to 2.3.0 2019-09-25 23:06:20 +02:00
Hugo Locurcio 65cb89a261
Document the Minetest 5.0.0 version requirement 2019-09-08 22:57:15 +02:00
Hugo Locurcio cb4888a2bb
Travis CI: Use the `bionic` distribution 2019-07-29 00:49:03 +02:00
Hugo Locurcio ae83eea882
Optimize PNG images losslessly
Commands used:

- `parallel optipng -o7 -zm1-9 -strip all ::: **/*.png`
- `parallel advpng -z4 -i5000 ::: **/*.png`
2019-06-19 21:22:29 +02:00
Hugo Locurcio 2f34184047
Add description and dependencies to `mod.conf`
The legacy `depends.txt` and `description.txt` files are no longer
needed since Minetest 5.0.0 or later will read everything from
`mod.conf`.

This raises the minimum supported Minetest version to 5.0.0.
2019-04-23 21:54:27 +02:00
Hugo Locurcio 0dfadcf43a
Remove the optional mod loading message 2019-04-03 00:16:03 +02:00
Hugo Locurcio e6723e516b
Fix `minetest.setting_getbool()` deprecation warning 2019-04-03 00:14:44 +02:00
Hugo Locurcio 1ff1b355bc
Improve writing style and formatting in the nodes and items list
This closes #12.
2019-03-30 19:35:54 +01:00
Hugo Locurcio a2a54396bb
Add intllib as an optional dependency 2019-03-30 00:56:56 +01:00
37 changed files with 520 additions and 694 deletions

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

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

View File

@ -3,6 +3,10 @@ unused_args = false
allow_defined_top = true
max_line_length = 90
globals = {
"maptools"
}
stds.minetest = {
read_globals = {
"DIR_DELIM",
@ -23,7 +27,3 @@ stds.minetest = {
},
}
}
read_globals = {
"intllib",
}

View File

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

View File

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

View File

@ -1,22 +0,0 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.1.0] - 2019-03-23
### Changed
- Increased the range of the Admin Pickaxe from 12 to 20 nodes.
- Updated intllib support to avoid using deprecated functions.
## 1.0.0 - 2017-02-19
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/maptools/compare/v1.1.0...HEAD
[1.1.0]: https://github.com/minetest-mods/maptools/compare/v1.0.0...v1.1.0

View File

@ -1,6 +1,6 @@
# zlib license
Copyright © 2012-2019 Hugo Locurcio and contributors
Copyright © 2012-2020 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,26 +0,0 @@
# Item names for spawning the items using /give or /giveme
## Items
- `admin_pick`: magenta pickaxe, infinite durability, mines everything including unbreakable blocks instantly. No drops. Don't put this pickaxe in the hands of a griefer, of course.
- `admin_pick_with_drops`: same as admin pickaxe, but drops stuff.
- `infinite_fuel`: fuel lasting for a (near)-infinite time. Don't worry about the "near" * it lasts for about 50 in-real-life years.
- `super_apple`: a yellow apple which heals 20 HP.
- `copper_coin`,
- `silver_coin`,
- `gold_coin`: these have nothing to do with the More Ores mod; they can be used as a currency for trading, or as an universal currency for mods that add shops.
## Blocks
**[!]** denotes an unpointable, unbreakable block; be very careful with them, they cannot be removed by hand (they can only be removed with WorldEdit or similar).
- `(block)_u` : unbreakable, non-flammable, non-falling, non-decaying blocks, most common blocks have their unbreakable form (examples: maptools:stone or maptools:wood for unbreakable stone/wood). Examples: `stone_u`, `wood_u`, `glass_u`, …
- `full_grass`: unbreakable block with the grass texture on all sides.
- `player_clip`: **[!]** invisible block, not pointable.
- `full_clip`: invisible block, pointable. Also available as a thin face: full_clip_face.
- `smoke_block`: some smoke (does not harm players or entities).
- `no_build`: **[!]** very basic building prevention.
- `no_interact`: prevents interacting through the block (opening chests, furnaces, attacking entities, …).
- `damage_(1…5)`: **[!]** damaging blocks. The damage is in half hearts and ranges from 1 to 5 (0.5 to 2.5 hearts damage every second).
- `kill`: **[!]** instant kill (deals 10 heart damage) blocks.
- `light_block`: **[!]** invisible non-solid block, prevents light from passing through.
- `light_bulb`: **[!]** invisible non-solid block, emitting a good amount of light.

View File

@ -1,9 +1,12 @@
# Map Tools
# Map Tools [![](https://github.com/minetest-mods/maptools/workflows/build/badge.svg)](https://github.com/minetest-mods/maptools/actions)
Map Tools for [Minetest](https://www.minetest.net/), a free and open source infinite
world block sandbox game.
[**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=1882)
## Resources
- [Forum topic](https://forum.minetest.net/viewtopic.php?f=11&t=1882)
- [List of nodes and items available](docs/NODES_ITEMS.md)
## Installation
@ -18,9 +21,7 @@ git clone https://github.com/minetest-mods/maptools.git
You can also
[download a ZIP archive](https://github.com/minetest-mods/maptools/archive/master.zip)
of Map Tools. If you do so, you will need to extract the archive then rename
the resulting folder from `maptools-master` to `maptools` this is
**absolutely** required, as the mod won't work otherwise.
of Map Tools.
### Enable the mod
@ -60,13 +61,13 @@ on that line.
## Version compatibility
Map Tools is currently primarily tested with Minetest 0.4.17.
Map Tools is currently primarily tested with Minetest 5.1.0.
It may or may not work with newer or older versions. Issues arising in older
versions than 0.4.17 will generally not be fixed.
versions than 5.0.0 will generally not be fixed.
## License
Copyright © 2012-2019 Hugo Locurcio and contributors
Copyright © 2012-2020 Hugo Locurcio and contributors
- Map Tools code is licensed under the zlib license, see
[`LICENSE.md`](LICENSE.md) for details.

View File

@ -1,7 +1,7 @@
--[[
Map Tools: alias definitions
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]

View File

@ -1,14 +1,14 @@
--[[
Map Tools: configuration handling
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
maptools.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,9 +21,11 @@ local function setting(settingtype, name, default)
getbool_default("maptools." .. name, default)
else
maptools.config[name] =
minetest.setting_get("maptools." .. name) or default
minetest.settings:get("maptools." .. name) or default
end
end
-- Show Map Tools stuff in creative inventory (1 or 0):
setting("integer", "hide_from_creative_inventory", 1)
-- Enable crafting recipes for coins (true or false):
setting("bool", "enable_coin_crafting", false)

View File

@ -1,7 +1,7 @@
--[[
Map Tools: item definitions
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -14,29 +14,52 @@ minetest.register_craftitem("maptools:copper_coin", {
inventory_image = "maptools_copper_coin.png",
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
stack_max = 10000,
groups = {not_in_creative_inventory = maptools.creative},
})
if maptools.config and maptools.config.enable_coin_crafting then
minetest.register_craft({
output = "maptools:copper_coin 10",
type = "shapeless",
recipe = { "default:copper_ingot", "default:copper_ingot" }
})
end
minetest.register_craftitem("maptools:silver_coin", {
description = S("Silver Coin"),
inventory_image = "maptools_silver_coin.png",
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
stack_max = 10000,
groups = {not_in_creative_inventory = maptools.creative},
})
if maptools.config and maptools.config.enable_coin_crafting then
if minetest.get_modpath("moreores") then
minetest.register_craft({
output = "maptools:silver_coin 10",
type = "shapeless",
recipe = { "moreores:silver_ingot", "moreores:silver_ingot" }
})
end
end
minetest.register_craftitem("maptools:gold_coin", {
description = S("Gold Coin"),
inventory_image = "maptools_gold_coin.png",
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
stack_max = 10000,
groups = {not_in_creative_inventory = maptools.creative},
})
if maptools.config and maptools.config.enable_coin_crafting then
minetest.register_craft({
output = "maptools:gold_coin 10",
type = "shapeless",
recipe = { "default:gold_ingot", "default:gold_ingot" }
})
end
minetest.register_craftitem("maptools:infinitefuel", {
description = S("Infinite Fuel"),
inventory_image = "maptools_infinitefuel.png",
stack_max = 10000,
stack_max = 65535,
groups = {not_in_creative_inventory = maptools.creative},
})

View File

@ -1,295 +1,184 @@
--[[
Map Tools: unbreakable default nodes
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = maptools.S
local register_node = maptools.register_node
maptools.creative = maptools.config["hide_from_creative_inventory"]
minetest.register_node("maptools:stone", {
register_node("maptools:stone", {
description = S("Unbreakable Stone"),
range = 12,
stack_max = 10000,
tiles = {"default_stone.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:stonebrick", {
register_node("maptools:stonebrick", {
description = S("Unbreakable Stone Brick"),
range = 12,
stack_max = 10000,
tiles = {"default_stone_brick.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:tree", {
register_node("maptools:tree", {
description = S("Unbreakable Tree"),
range = 12,
stack_max = 10000,
tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
on_drop = maptools.drop_msg
on_place = minetest.rotate_node
})
minetest.register_node("maptools:jungletree", {
register_node("maptools:jungletree", {
description = S("Unbreakable Jungle Tree"),
range = 12,
stack_max = 10000,
tiles = {
"default_jungletree_top.png",
"default_jungletree_top.png",
"default_jungletree.png",
},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
on_drop = maptools.drop_msg
on_place = minetest.rotate_node
})
minetest.register_node("maptools:cactus", {
register_node("maptools:cactus", {
description = S("Unbreakable Cactus"),
range = 12,
stack_max = 10000,
tiles = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
on_drop = maptools.drop_msg
on_place = minetest.rotate_node
})
minetest.register_node("maptools:papyrus", {
register_node("maptools:papyrus", {
description = S("Unbreakable Papyrus"),
drawtype = "plantlike",
range = 12,
stack_max = 10000,
tiles = {"default_papyrus.png"},
inventory_image = "default_papyrus.png",
wield_image = "default_papyrus.png",
walkable = false,
paramtype = "light",
sunlight_propagates = true,
drop = "",
selection_box = {
type = "fixed",
fixed = {-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}
},
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_leaves_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("maptools:dirt", {
register_node("maptools:dirt", {
description = S("Unbreakable Dirt"),
range = 12,
stack_max = 10000,
tiles = {"default_dirt.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_dirt_defaults()
})
minetest.register_node("maptools:wood", {
register_node("maptools:wood", {
description = S("Unbreakable Wooden Planks"),
range = 12,
stack_max = 10000,
tiles = {"default_wood.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_wood_defaults()
})
minetest.register_node("maptools:junglewood", {
register_node("maptools:junglewood", {
description = S("Unbreakable Junglewood Planks"),
range = 12,
stack_max = 10000,
tiles = {"default_junglewood.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_wood_defaults()
})
minetest.register_node("maptools:glass", {
register_node("maptools:glass", {
description = S("Unbreakable Glass"),
range = 12,
stack_max = 10000,
drawtype = "glasslike",
tiles = {"default_glass.png"},
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_glass_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_glass_defaults()
})
minetest.register_node("maptools:leaves", {
register_node("maptools:leaves", {
description = S("Unbreakable Leaves"),
range = 12,
stack_max = 10000,
drawtype = "allfaces_optional",
tiles = {"default_leaves.png"},
paramtype = "light",
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_leaves_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_leaves_defaults()
})
minetest.register_node("maptools:sand", {
register_node("maptools:sand", {
description = S("Unbreakable Sand"),
range = 12,
stack_max = 10000,
tiles = {"default_sand.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_sand_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_sand_defaults()
})
minetest.register_node("maptools:gravel", {
register_node("maptools:gravel", {
description = S("Unbreakable Gravel"),
range = 12,
stack_max = 10000,
tiles = {"default_gravel.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.35},
dug = {name="default_gravel_footstep", gain=0.6},
}),
on_drop = maptools.drop_msg
})
})
minetest.register_node("maptools:clay", {
register_node("maptools:clay", {
description = S("Unbreakable Clay"),
range = 12,
stack_max = 10000,
tiles = {"default_clay.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_dirt_defaults()
})
minetest.register_node("maptools:desert_sand", {
register_node("maptools:desert_sand", {
description = S("Unbreakable Desert Sand"),
range = 12,
stack_max = 10000,
tiles = {"default_desert_sand.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_sand_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_sand_defaults()
})
minetest.register_node("maptools:sandstone", {
register_node("maptools:sandstone", {
description = S("Unbreakable Sandstone"),
range = 12,
stack_max = 10000,
tiles = {"default_sandstone.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:sandstone_brick", {
register_node("maptools:sandstone_brick", {
description = S("Unbreakable Sandstone Brick"),
range = 12,
stack_max = 10000,
tiles = {"default_sandstone_brick.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:desert_stone", {
register_node("maptools:desert_stone", {
description = S("Unbreakable Desert Stone"),
range = 12,
stack_max = 10000,
tiles = {"default_desert_stone.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:desert_cobble", {
register_node("maptools:desert_cobble", {
description = S("Unbreakable Desert Cobble"),
range = 12,
stack_max = 10000,
tiles = {"default_desert_cobble.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:desert_stonebrick", {
register_node("maptools:desert_stonebrick", {
description = S("Unbreakable Desert Stone Brick"),
range = 12,
stack_max = 10000,
tiles = {"default_desert_stone_brick.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:grass", {
register_node("maptools:grass", {
description = S("Unbreakable Dirt with Grass"),
range = 12,
stack_max = 10000,
tiles = {
"default_grass.png",
"default_dirt.png",
"default_dirt.png^default_grass_side.png",
},
paramtype2 = "facedir",
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain = 0.4},
}),
on_drop = maptools.drop_msg
})
})
minetest.register_node("maptools:fullgrass", {
register_node("maptools:fullgrass", {
description = S("Unbreakable Full Grass"),
range = 12,
stack_max = 10000,
tiles = {"default_grass.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
on_drop = maptools.drop_msg
})
})
for slab_num = 1,3,1 do
minetest.register_node("maptools:slab_grass_" .. slab_num * 4, {
register_node("maptools:slab_grass_" .. slab_num * 4, {
description = S("Grass Slab"),
range = 12,
stack_max = 10000,
tiles = {
"default_grass.png",
"default_dirt.png",
@ -303,150 +192,90 @@ for slab_num = 1,3,1 do
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_dirt_defaults(
{footstep = {name="default_grass_footstep", gain = 0.4}}
),
on_drop = maptools.drop_msg
)
})
end
minetest.register_node("maptools:cobble", {
register_node("maptools:cobble", {
description = S("Unbreakable Cobblestone"),
range = 12,
stack_max = 10000,
tiles = {"default_cobble.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:mossycobble", {
register_node("maptools:mossycobble", {
description = S("Unbreakable Mossy Cobblestone"),
range = 12,
stack_max = 10000,
tiles = {"default_mossycobble.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:brick", {
register_node("maptools:brick", {
description = S("Unbreakable Brick"),
range = 12,
stack_max = 10000,
tiles = {"default_brick.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:coalblock", {
register_node("maptools:coalblock", {
description = S("Unbreakable Coal Block"),
range = 12,
stack_max = 10000,
tiles = {"default_coal_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:steelblock", {
register_node("maptools:steelblock", {
description = S("Unbreakable Steel Block"),
range = 12,
stack_max = 10000,
tiles = {"default_steel_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:goldblock", {
register_node("maptools:goldblock", {
description = S("Unbreakable Gold Block"),
range = 12,
stack_max = 10000,
tiles = {"default_gold_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:copperblock", {
register_node("maptools:copperblock", {
description = S("Unbreakable Copper Block"),
range = 12,
stack_max = 10000,
tiles = {"default_copper_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:bronzeblock", {
register_node("maptools:bronzeblock", {
description = S("Unbreakable Bronze Block"),
range = 12,
stack_max = 10000,
tiles = {"default_bronze_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("maptools:diamondblock", {
register_node("maptools:diamondblock", {
description = S("Unbreakable Diamond Block"),
range = 12,
stack_max = 10000,
tiles = {"default_diamond_block.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_stone_defaults()
})
-- Farming:
minetest.register_node("maptools:soil_wet", {
register_node("maptools:soil_wet", {
description = "Wet Soil",
range = 12,
stack_max = 10000,
tiles = {
"default_dirt.png^farming_soil_wet.png",
"default_dirt.png^farming_soil_wet_side.png",
},
drop = "",
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
soil = 3,
wet = 1,
grassland = 1,
},
sounds = default.node_sound_dirt_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_dirt_defaults()
})
minetest.register_node("maptools:desert_sand_soil_wet", {
register_node("maptools:desert_sand_soil_wet", {
description = "Wet Desert Sand Soil",
range = 12,
stack_max = 10000,
drop = "",
tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
soil = 3,
wet = 1,
desert = 1,
},
sounds = default.node_sound_sand_defaults(),
on_drop = maptools.drop_msg
sounds = default.node_sound_sand_defaults()
})

View File

@ -1 +0,0 @@
default

View File

@ -1 +0,0 @@
Adds various special versions of normal blocks, tools, and other map maintainer tools.

64
docs/CHANGELOG.md Normal file
View File

@ -0,0 +1,64 @@
# 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]
### Fixed
- [The Admin Pickaxe can now dig More Ores' mithril blocks with client-side prediction (thanks to `maxlevel` being increased from 3 to 5).](https://github.com/minetest-mods/maptools/pull/30)
## [2.2.0] - 2021-06-28
### Changed
- [Disabled crafting recipes for coins by default.](https://github.com/minetest-mods/maptools/pull/29)
- They can be enabled again by setting `maptools.enable_coin_crafting = true`
in `minetest.conf`.
- Map Tools nodes can no longer be exploded by TNT.
- Switched from Travis CI to GitHub Actions for continuous integration.
## [2.1.0] - 2020-06-08
### Changed
- 10 coins of each type can now be crafted using 2 ingots (bronze, silver or gold).
- Silver coins require [More Ores](https://github.com/minetest-mods/moreores)
to be crafted, since minetest_game doesn't have silver ingots.
- Coins are now displayed in the creative inventory.
- Moved translations from intllib to Minetest's built-in localization system.
- This allows translations to show up independently of the server's language.
## [2.0.0] - 2019-11-25
### Changed
- The minimum supported Minetest version is now 5.0.0.
- Map Tools nodes/items can no longer be dropped to prevent them from falling
into bad hands.
### Fixed
- The inventory images of `no_interact`, `no_build`, `ignore_like_no_clip`
and `ignore_like_no_point` now use textures that are available in
Minetest Game 5.0.0.
## [1.1.0] - 2019-03-23
### Changed
- Increased the range of the Admin Pickaxe from 12 to 20 nodes.
- Updated intllib support to avoid using deprecated functions.
## 1.0.0 - 2017-02-19
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/maptools/compare/v2.2.0...HEAD
[2.2.0]: https://github.com/minetest-mods/maptools/compare/v2.1.0...v2.2.0
[2.1.0]: https://github.com/minetest-mods/maptools/compare/v2.0.0...v2.1.0
[2.0.0]: https://github.com/minetest-mods/maptools/compare/v1.1.0...v2.0.0
[1.1.0]: https://github.com/minetest-mods/maptools/compare/v1.0.0...v1.1.0

45
docs/NODES_ITEMS.md Normal file
View File

@ -0,0 +1,45 @@
# List of nodes/items
To use an item, make sure you have the `give` privilege, then use
`/give <player> <item code> [amount]` or `/giveme <item code> [amount]`.
**Tip:** To give yourself a large amount of items quickly (65535 as of writing),
use `-1` as the amount.
## Nodes
:warning: denotes an unpointable, unbreakable block; be very careful with them,
as they cannot be removed by hand (they can only be removed with
[WorldEdit](https://github.com/Uberi/Minetest-WorldEdit) or similar).
> **Note**
>
> All of the nodes mentioned below have aliases which can be used as well.\
> Here's the full aliases list: <https://github.com/minetest-mods/maptools/blob/master/aliases.lua>
| Item code | Description |
| ----------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `maptools:{block}_u` | Unbreakable, non-flammable, non-falling, non-decaying blocks. Most common default blocks have an unbreakable form available (`maptools:stone_u`, `maptools:wood_u`, …) |
| `maptools:full_grass` | Unbreakable block with the grass texture on all sides. |
| `maptools:playerclip` | :warning: Invisible, non-pointable block that blocks players and entities. |
| `maptools:fullclip` | Invisible, pointable block that blocks players and entities. Also available as a thin face (`maptools:fullclip_face`). |
| `maptools:smoke` | Some smoke. Decreases visibility, but doesn't damage players or entities). |
| `maptools:nobuild` | :warning: Very basic building prevention. |
| `maptools:nointeract` | Prevents interacting through the block (opening chests, furnaces, attacking entities, …), but can still be walked through. |
| `maptools:damage_{1…5}` | :warning: Damaging blocks which damage players by 1 to 5 HP per second. |
| `maptools:kill` | :warning: Instant kill blocks (damages players by 20 HP per second). |
| `maptools:drowning` | :warning: Simulates drowning in water. |
| `maptools:light_block` | :warning: Invisible non-solid block, prevents light from passing through. |
| `maptools:lightbulb` | :warning: Invisible non-solid block, emitting the maximum amount of light. |
## Items
| Item code | Description |
| -------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------ |
| `maptools:pick_admin` | A bright magenta pickaxe with infinite durability, digs everything including unbreakable blocks instantly. No drops are given when digging nodes. |
| `maptools:pick_admin_with_drops` | Same as the admin pickaxe, but drops are given when digging nodes. |
| `maptools:infinitefuel` | Fuel lasting for a near-infinite time (about 50 real-life years). |
| `maptools:superapple` | A yellow apple which heals the player by 20 HP when used. |
| `maptools:copper_coin` | Decorative item (can be used in mini-games). |
| `maptools:silver_coin` | Decorative item (can be used in mini-games). |
| `maptools:gold_coin` | Decorative item (can be used in mini-games). |

View File

@ -3,7 +3,7 @@
** Map Tools **
By Calinou.
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
=====================================================================
--]]
@ -12,9 +12,32 @@ maptools = {}
local modpath = minetest.get_modpath("maptools")
local S, NS = dofile(modpath .. "/intllib.lua")
local S = minetest.get_translator("maptools")
maptools.S = S
maptools.NS = NS
maptools.drop_msg = function(itemstack, player)
local name = player:get_player_name()
minetest.chat_send_player(name, S("[maptools] tools/nodes do not drop!"))
end
function maptools.register_node(name, def)
-- Increase the interaction range when holding Map Tools nodes to make building easier.
def.range = 12
def.stack_max = 65535
def.drop = ""
if def.groups then
if not def.groups.dig_immediate then
def.groups.unbreakable = 1
end
def.groups.not_in_creative_inventory = maptools.creative
else
def.groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}
end
def.on_drop = maptools.drop_msg
-- Prevent Map Tools nodes from being exploded by TNT.
def.on_blast = function() end
minetest.register_node(name, def)
end
dofile(modpath .. "/config.lua")
dofile(modpath .. "/aliases.lua")
@ -22,12 +45,3 @@ dofile(modpath .. "/craftitems.lua")
dofile(modpath .. "/default_nodes.lua")
dofile(modpath .. "/nodes.lua")
dofile(modpath .. "/tools.lua")
maptools.drop_msg = function(itemstack, player)
local name = player:get_player_name()
minetest.chat_send_player(name, S("[maptools] tools/nodes do not drop!"))
end
if minetest.setting_getbool("log_mods") then
minetest.log("action", S("[maptools] loaded."))
end

View File

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

View File

@ -1,39 +0,0 @@
# Translation by kaeza
[maptools] loaded. = [maptools] cargado.
Cloud = Nube
Infinite Fuel = Combustible Infinito
Admin Pickaxe = Pico de Administrador
Copper Coin = Moneda de Cobre
Silver Coin = Moneda de Plata
Gold Coin = Moneda de Oro
Super Apple = Super Manzana
Fake Ladder = Escalera Falsa
Smoke Block = Bloque de Humo
Damaging Block: %s = Bloque Dañino: %s
Kill Block = Bloque Mortal
Build Prevention = Bloqueador de Construcción
Interact Prevention = Bloqueador de Interacción
Climb Block = Bloque Escalable
Light Block = Bloqueador de Luz
Light Bulb = Lamparilla
Player Clip = Bloqueo de Jugador
Full Clip = Bloqueo Total
Unbreakable Stone = Piedra Irrompible
Unbreakable Sand = Arena Irrompible
Unbreakable Desert Stone = Piedra Desértica Irrompible
Unbreakable Desert Sand = Arena Desértica Irrompible
Unbreakable Gravel = Gravilla Irrompible
Unbreakable Dirt = Tierra Irrompible
Unbreakable Dirt with Grass = Hierba Irrompible
Unbreakable Full Grass= Bloque de Hierba Irrompible
Unbreakable Brick = Ladrillos Irrompibles
Unbreakable Wooden Planks = Planchas de Madera Irrompibles
Unbreakable Tree = Tronco de Árbol Irrompible
Unbreakable Glass = Cristal Irrompible
Unbreakable Sandstone = Arenisca Irrompible
Unbreakable Leaves = Foliaje Irrompible
Unbreakable Cobblestone = Guijarros Irrompibles
Unbreakable Mossy Cobblestone = Guijarros Enmohecidos Irrompibles

View File

@ -1,47 +0,0 @@
# Translation by Calinou
[maptools] loaded. = [maptools] a été chargé.
Cloud = Nuage
Infinite Fuel = Carburant infini
Admin Pickaxe = Pioche d'administrateur
Admin Pickaxe With Drops = Pioche d'administrateur qui donne des objets
Copper Coin = Pièce de cuivre
Silver Coin = Pièce d'argent
Gold Coin = Pièce d'or
Super Apple = Super pomme
Fake Ladder = Fausse échelle
Smoke Block = Bloc de fumée
Damaging Block: %s = Bloc de dégâts : %s
Kill Block = Bloc qui tue
Build Prevention = Prévention de construction
Interact Prevention = Prévention d'interaction
Climb Block = Bloc à grimper
Light Block = Bloqueur de lumière
Light Bulb = Bloc lumineux
Player Clip = Bloque-joueurs
Player Clip Bottom Face = Face inférieure de bloque-joueurs
Player Clip Top Face = Face supérieure de bloque-joueurs
Full Clip = Bloque-tout
Full Clip Face = Face de bloque-tout
Permanent Fire = Feu permanent
Fake Fire = Faux feu
Igniter = Incendieur
Pusher: %s = Pousseur : %s
Unbreakable Stone = Pierre incassable
Unbreakable Sand = Sable incassable
Unbreakable Desert Stone = Pierre de désert incassable
Unbreakable Desert Sand = Sable de désert incassable
Unbreakable Gravel = Gravier incassable
Unbreakable Dirt = Terre incassable
Unbreakable Dirt with Grass = Herbe incassable
Unbreakable Full Grass= Bloc d'herbe incassable
Unbreakable Brick = Briques incassables
Unbreakable Wooden Planks = Planches de bois incassables
Unbreakable Tree = Tronc d'arbre incassable
Unbreakable Glass = Verre incassable
Unbreakable Sandstone = Grès incassable
Unbreakable Leaves = Feuillage incassable
Unbreakable Cobblestone = Pierre taillée incassable
Unbreakable Mossy Cobblestone = Pierre taillée mousseusse incassable

View File

@ -1,47 +0,0 @@
# Translation by Emon
[maptools] loaded. = [maptools] caricato.
Cloud = Nuvola
Infinite Fuel = Combustibile infinito
Admin Pickaxe = Piccone della amministrazione
Admin Pickaxe With Drops = Piccone della amministrazione che lascia cadere a terra
Copper Coin = Moneta di rame
Silver Coin = Moneta di argento
Gold Coin = Moneta di oro
Super Apple = Super mela
Fake Ladder = Finta scala a pioli
Smoke Block = Blocco di fumo
Damaging Block: %s = Blocco che danneggia : %s
Kill Block = Blocco che uccide
Build Prevention = Impedimento alla costruzione
Interact Prevention = Impedimento alla interazione
Climb Block = Blocco su cui ci si può arrampicare
Light Block = Blocco di luce
Light Bulb = Lampadina
Player Clip = Blocca giocatori
Player Clip Bottom Face = Blocca giocatori - faccia inferiore
Player Clip Top Face = Glocca giocatori - faccia superiore
Full Clip = Blocca tutti
Full Clip Face = Faccia del blocca tutti
Permanent Fire = Fuoco eterno
Fake Fire = Fuoco finto
Igniter = Accendino
Pusher: %s = Che ha spinto : %s
Unbreakable Stone = Pietra infrangibile
Unbreakable Sand = Sabbia infrangibile
Unbreakable Desert Stone = Pietra del deserto infrangibile
Unbreakable Desert Sand = Sabbia del deserto infrangibile
Unbreakable Gravel = Ghiaia infrangibile
Unbreakable Dirt = Terra infrangibile
Unbreakable Dirt with Grass = Erba infrangibile
Unbreakable Full Grass= Blocco d'erba infrangibile
Unbreakable Brick = Mattoni infrangibile
Unbreakable Wooden Planks = Assi in legno infrangibili
Unbreakable Tree = Albero infrangibile
Unbreakable Glass = Vetro infrangibile
Unbreakable Sandstone = Arenaria infrangibile
Unbreakable Leaves = Foglie infrangibili
Unbreakable Cobblestone = Ciottolo infrangibile
Unbreakable Mossy Cobblestone = Ciottolo muschioso infrangibile

38
locale/maptools.es.tr Normal file
View File

@ -0,0 +1,38 @@
# textdomain: maptools
[maptools] loaded.=[maptools] cargado.
Cloud=Nube
Infinite Fuel=Combustible Infinito
Admin Pickaxe=Pico de Administrador
Copper Coin=Moneda de Cobre
Silver Coin=Moneda de Plata
Gold Coin=Moneda de Oro
Super Apple=Super Manzana
Fake Ladder=Escalera Falsa
Smoke Block=Bloque de Humo
Damaging Block: %s=Bloque Dañino: %s
Kill Block=Bloque Mortal
Build Prevention=Bloqueador de Construcción
Interact Prevention=Bloqueador de Interacción
Climb Block=Bloque Escalable
Light Block=Bloqueador de Luz
Light Bulb=Lamparilla
Player Clip=Bloqueo de Jugador
Full Clip=Bloqueo Total
Unbreakable Stone=Piedra Irrompible
Unbreakable Sand=Arena Irrompible
Unbreakable Desert Stone=Piedra Desértica Irrompible
Unbreakable Desert Sand=Arena Desértica Irrompible
Unbreakable Gravel=Gravilla Irrompible
Unbreakable Dirt=Tierra Irrompible
Unbreakable Dirt with Grass=Hierba Irrompible
Unbreakable Full Grass=Bloque de Hierba Irrompible
Unbreakable Brick=Ladrillos Irrompibles
Unbreakable Wooden Planks=Planchas de Madera Irrompibles
Unbreakable Tree=Tronco de Árbol Irrompible
Unbreakable Glass=Cristal Irrompible
Unbreakable Sandstone=Arenisca Irrompible
Unbreakable Leaves=Foliaje Irrompible
Unbreakable Cobblestone=Guijarros Irrompibles
Unbreakable Mossy Cobblestone=Guijarros Enmohecidos Irrompibles

46
locale/maptools.fr.tr Normal file
View File

@ -0,0 +1,46 @@
# textdomain: maptools
[maptools] loaded.=[maptools] a été chargé.
Cloud=Nuage
Infinite Fuel=Carburant infini
Admin Pickaxe=Pioche d'administrateur
Admin Pickaxe With Drops=Pioche d'administrateur qui donne des objets
Copper Coin=Pièce de cuivre
Silver Coin=Pièce d'argent
Gold Coin=Pièce d'or
Super Apple=Super pomme
Fake Ladder=Fausse échelle
Smoke Block=Bloc de fumée
Damaging Block: %s=Bloc de dégâts : %s
Kill Block=Bloc qui tue
Build Prevention=Prévention de construction
Interact Prevention=Prévention d'interaction
Climb Block=Bloc à grimper
Light Block=Bloqueur de lumière
Light Bulb=Bloc lumineux
Player Clip=Bloque-joueurs
Player Clip Bottom Face=Face inférieure de bloque-joueurs
Player Clip Top Face=Face supérieure de bloque-joueurs
Full Clip=Bloque-tout
Full Clip Face=Face de bloque-tout
Permanent Fire=Feu permanent
Fake Fire=Faux feu
Igniter=Incendieur
Pusher: %s=Pousseur : %s
Unbreakable Stone=Pierre incassable
Unbreakable Sand=Sable incassable
Unbreakable Desert Stone=Pierre de désert incassable
Unbreakable Desert Sand=Sable de désert incassable
Unbreakable Gravel=Gravier incassable
Unbreakable Dirt=Terre incassable
Unbreakable Dirt with Grass=Herbe incassable
Unbreakable Full Grass=Bloc d'herbe incassable
Unbreakable Brick=Briques incassables
Unbreakable Wooden Planks=Planches de bois incassables
Unbreakable Tree=Tronc d'arbre incassable
Unbreakable Glass=Verre incassable
Unbreakable Sandstone=Grès incassable
Unbreakable Leaves=Feuillage incassable
Unbreakable Cobblestone=Pierre taillée incassable
Unbreakable Mossy Cobblestone=Pierre taillée mousseusse incassable

46
locale/maptools.it.tr Normal file
View File

@ -0,0 +1,46 @@
# textdomain: maptools
[maptools] loaded.=[maptools] caricato.
Cloud=Nuvola
Infinite Fuel=Combustibile infinito
Admin Pickaxe=Piccone della amministrazione
Admin Pickaxe With Drops=Piccone della amministrazione che lascia cadere a terra
Copper Coin=Moneta di rame
Silver Coin=Moneta di argento
Gold Coin=Moneta di oro
Super Apple=Super mela
Fake Ladder=Finta scala a pioli
Smoke Block=Blocco di fumo
Damaging Block: %s=Blocco che danneggia : %s
Kill Block=Blocco che uccide
Build Prevention=Impedimento alla costruzione
Interact Prevention=Impedimento alla interazione
Climb Block=Blocco su cui ci si può arrampicare
Light Block=Blocco di luce
Light Bulb=Lampadina
Player Clip=Blocca giocatori
Player Clip Bottom Face=Blocca giocatori - faccia inferiore
Player Clip Top Face=Glocca giocatori - faccia superiore
Full Clip=Blocca tutti
Full Clip Face=Faccia del blocca tutti
Permanent Fire=Fuoco eterno
Fake Fire=Fuoco finto
Igniter=Accendino
Pusher: %s=Che ha spinto : %s
Unbreakable Stone=Pietra infrangibile
Unbreakable Sand=Sabbia infrangibile
Unbreakable Desert Stone=Pietra del deserto infrangibile
Unbreakable Desert Sand=Sabbia del deserto infrangibile
Unbreakable Gravel=Ghiaia infrangibile
Unbreakable Dirt=Terra infrangibile
Unbreakable Dirt with Grass=Erba infrangibile
Unbreakable Full Grass=Blocco d'erba infrangibile
Unbreakable Brick=Mattoni infrangibile
Unbreakable Wooden Planks=Assi in legno infrangibili
Unbreakable Tree=Albero infrangibile
Unbreakable Glass=Vetro infrangibile
Unbreakable Sandstone=Arenaria infrangibile
Unbreakable Leaves=Foglie infrangibili
Unbreakable Cobblestone=Ciottolo infrangibile
Unbreakable Mossy Cobblestone=Ciottolo muschioso infrangibile

View File

@ -0,0 +1,46 @@
# textdomain: maptools
[maptools] loaded.=
Cloud=Nuage
Infinite Fuel=
Admin Pickaxe=
Admin Pickaxe With Drops=
Copper Coin=
Silver Coin=
Gold Coin=
Super Apple=
Fake Ladder=
Smoke Block=
Damaging Block: %s=
Kill Block=
Build Prevention=
Interact Prevention=
Climb Block=
Light Block=
Light Bulb=
Player Clip=
Player Clip Bottom Face=
Player Clip Top Face=
Full Clip=
Full Clip Face=
Permanent Fire=
Fake Fire=
Igniter=
Pusher: %s=
Unbreakable Stone=
Unbreakable Sand=
Unbreakable Desert Stone=
Unbreakable Desert Sand=
Unbreakable Gravel=
Unbreakable Dirt=
Unbreakable Dirt with Grass=
Unbreakable Full Grass=
Unbreakable Brick=
Unbreakable Wooden Planks=
Unbreakable Tree=
Unbreakable Glass=
Unbreakable Sandstone=
Unbreakable Leaves=
Unbreakable Cobblestone=
Unbreakable Mossy Cobblestone=

View File

@ -1 +1,5 @@
name = maptools
description = Adds various special versions of normal blocks, tools, and other map maintainer tools.
depends = default
optional_depends = moreores
min_minetest_version = 5.0.0

221
nodes.lua
View File

@ -1,68 +1,49 @@
--[[
Map Tools: node definitions
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
local S = maptools.S
local register_node = maptools.register_node
maptools.creative = maptools.config["hide_from_creative_inventory"]
-- Redefine cloud so that the admin pickaxe can mine it
minetest.register_node(":default:cloud", {
register_node(":default:cloud", {
description = S("Cloud"),
tiles = {"default_cloud.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_defaults(),
on_drop = maptools.drop_msg
})
-- Nodes
minetest.register_node("maptools:black", {
register_node("maptools:black", {
description = S("Black"),
range = 12,
stack_max = 10000,
tiles = {"black.png"},
drop = "",
post_effect_color = {a=255, r=0, g=0, b=0},
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:white", {
register_node("maptools:white", {
description = S("White"),
range = 12,
stack_max = 10000,
tiles = {"white.png"},
drop = "",
post_effect_color = {a=255, r=128, g=128, b=128},
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:playerclip", {
register_node("maptools:playerclip", {
description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike",
paramtype = "light",
pointable = false,
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:fake_walkable", {
register_node("maptools:fake_walkable", {
description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike",
paramtype = "light",
@ -74,28 +55,18 @@ minetest.register_node("maptools:fake_walkable", {
{0, 0, 0, 0, 0, 0},
},
},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:fullclip", {
register_node("maptools:fullclip", {
description = S("Full Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_blue.png",
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:fake_walkable_pointable", {
register_node("maptools:fake_walkable_pointable", {
description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike",
paramtype = "light",
@ -106,167 +77,125 @@ minetest.register_node("maptools:fake_walkable_pointable", {
{0, 0, 0, 0, 0, 0},
},
},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:ignore_like", {
register_node("maptools:ignore_like", {
description = S("Ignore-like"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_pink.png",
tiles = {"invisible.png"},
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
use_texture_alpha = "clip",
})
minetest.register_node("maptools:ignore_like_no_clip", {
register_node("maptools:ignore_like_no_clip", {
description = S("Ignore-like (no clip)"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_purple.png",
inventory_image = "default_steel_block.png^dye_violet.png",
tiles = {"invisible.png"},
paramtype = "light",
walkable = false,
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
use_texture_alpha = "clip",
})
minetest.register_node("maptools:ignore_like_no_point", {
register_node("maptools:ignore_like_no_point", {
description = S("Ignore-like (no point)"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_purple.png",
inventory_image = "default_steel_block.png^dye_violet.png",
tiles = {"invisible.png"},
paramtype = "light",
pointable = false,
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
use_texture_alpha = "clip",
})
minetest.register_node("maptools:ignore_like_no_clip_no_point", {
register_node("maptools:ignore_like_no_clip_no_point", {
description = S("Ignore-like (no clip, no point)"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_pink.png",
tiles = {"invisible.png"},
paramtype = "light",
walkable = false,
pointable = false,
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:fullclip_face", {
register_node("maptools:fullclip_face", {
description = S("Full Clip Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_white.png",
drawtype = "nodebox",
tiles = {"invisible.png"},
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
use_texture_alpha = "clip",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
},
drop = "",
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100,
},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:playerclip_bottom", {
register_node("maptools:playerclip_bottom", {
description = S("Player Clip Bottom Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_orange.png",
drawtype = "nodebox",
tiles = {"invisible.png"},
pointable = false,
paramtype = "light",
sunlight_propagates = true,
use_texture_alpha = "clip",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
},
drop = "",
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100,
},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:playerclip_top", {
register_node("maptools:playerclip_top", {
description = S("Player Clip Top Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_yellow.png",
drawtype = "nodebox",
tiles = {"invisible.png"},
pointable = false,
paramtype = "light",
sunlight_propagates = true,
use_texture_alpha = "clip",
node_box = {
type = "fixed",
fixed = {-0.5, 0.4999, -0.5, 0.5, 0.5, 0.5},
},
drop = "",
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100,
},
on_drop = maptools.drop_msg
})
for pusher_num=1,10,1 do
minetest.register_node("maptools:pusher_" .. pusher_num, {
register_node("maptools:pusher_" .. pusher_num, {
description = S("Pusher (%s)"):format(pusher_num),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_apple.png",
inventory_image = "default_steel_block.png^default_apple.png",
drawtype = "nodebox",
tiles = {"invisible.png"},
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
use_texture_alpha = "clip",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
},
drop = "",
groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100,
bouncy = pusher_num * 100,
},
on_drop = maptools.drop_msg
})
end
minetest.register_node("maptools:lightbulb", {
register_node("maptools:lightbulb", {
description = S("Light Bulb"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_mese_crystal_fragment.png",
drawtype = "airlike",
walkable = false,
@ -274,44 +203,29 @@ minetest.register_node("maptools:lightbulb", {
light_source = 14,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:nobuild", {
register_node("maptools:nobuild", {
description = S("Build Prevention"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^bones_bones.png",
inventory_image = "default_steel_block.png^default_flint.png",
drawtype = "airlike",
walkable = false,
pointable = false,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:nointeract", {
register_node("maptools:nointeract", {
description = S("Interact Prevention"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_scorched_stuff.png",
inventory_image = "default_steel_block.png^default_bush_stem.png",
drawtype = "airlike",
walkable = false,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:climb", {
register_node("maptools:climb", {
description = S("Climb Block"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_ladder_wood.png",
drawtype = "airlike",
walkable = false,
@ -319,16 +233,11 @@ minetest.register_node("maptools:climb", {
pointable = false,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
for damage_num=1,5,1 do
minetest.register_node("maptools:damage_" .. damage_num, {
register_node("maptools:damage_" .. damage_num, {
description = S("Damaging Block (%s)"):format(damage_num),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^farming_cotton_" .. damage_num .. ".png",
drawtype = "airlike",
walkable = false,
@ -336,16 +245,11 @@ minetest.register_node("maptools:damage_" .. damage_num, {
damage_per_second = damage_num,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
end
minetest.register_node("maptools:kill", {
register_node("maptools:kill", {
description = S("Kill Block"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_black.png",
drawtype = "airlike",
walkable = false,
@ -353,29 +257,19 @@ minetest.register_node("maptools:kill", {
damage_per_second = 20,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:smoke", {
register_node("maptools:smoke", {
description = S("Smoke Block"),
range = 12,
stack_max = 10000,
tiles = {"maptools_smoke.png"},
drawtype = "allfaces_optional",
walkable = false,
paramtype = "light",
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
post_effect_color = {a=192, r=96, g=96, b=96},
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:ladder", {
register_node("maptools:ladder", {
description = S("Fake Ladder"),
range = 12,
stack_max = 10000,
drawtype = "signlike",
tiles = {"default_ladder_wood.png"},
inventory_image = "default_ladder_wood.png",
@ -387,16 +281,11 @@ minetest.register_node("maptools:ladder", {
selection_box = {
type = "wallmounted",
},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(),
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:permanent_fire", {
register_node("maptools:permanent_fire", {
description = S("Permanent Fire"),
range = 12,
stack_max = 10000,
drawtype = "plantlike",
paramtype = "light",
tiles = {{
@ -405,18 +294,13 @@ minetest.register_node("maptools:permanent_fire", {
}},
inventory_image = "fire_basic_flame.png",
light_source = 14,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sunlight_propagates = true,
walkable = false,
damage_per_second = 4,
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:fake_fire", {
register_node("maptools:fake_fire", {
description = S("Fake Fire"),
range = 12,
stack_max = 10000,
drawtype = "plantlike",
paramtype = "light",
tiles = {{
@ -425,32 +309,23 @@ minetest.register_node("maptools:fake_fire", {
}},
inventory_image = "fire_basic_flame.png",
light_source = 14,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sunlight_propagates = true,
walkable = false,
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:igniter", {
register_node("maptools:igniter", {
drawtype = "airlike",
range = 12,
stack_max = 10000,
description = S("Igniter"),
paramtype = "light",
inventory_image = "fire_basic_flame.png",
drop = "",
groups = {igniter=2, unbreakable = 1, not_in_creative_inventory = maptools.creative},
groups = {igniter=2},
sunlight_propagates = true,
pointable = false,
walkable = false,
on_drop = maptools.drop_msg
})
minetest.register_node("maptools:superapple", {
register_node("maptools:superapple", {
description = S("Super Apple"),
range = 12,
stack_max = 10000,
drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"maptools_superapple.png"},
@ -465,5 +340,15 @@ minetest.register_node("maptools:superapple", {
groups = {fleshy=3, dig_immediate=3, not_in_creative_inventory = maptools.creative},
on_use = minetest.item_eat(20),
sounds = default.node_sound_defaults(),
on_drop = maptools.drop_msg
})
register_node("maptools:drowning", {
description = S("Drownable Air"),
inventory_image = "default_steel_block.png^dye_black.png",
drawtype = "airlike",
paramtype = "light",
pointable = false,
walkable = false,
drowning = 1,
sunlight_propagates = true,
})

3
settingtypes.txt Normal file
View File

@ -0,0 +1,3 @@
# If `true`, enables coin crafting recipes. If `false`, disables coin crafting recipes.
# Takes effect only at load-time; runtime changes to this setting are ignored.
maptools.enable_coin_crafting (Enable crafting recipes for coins) bool false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 794 B

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 B

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 466 B

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B

After

Width:  |  Height:  |  Size: 380 B

View File

@ -1,7 +1,7 @@
--[[
Map Tools: tool definitions
Copyright © 2012-2019 Hugo Locurcio and contributors.
Copyright © 2012-2020 Hugo Locurcio and contributors.
Licensed under the zlib license. See LICENSE.md for more information.
--]]
@ -13,13 +13,13 @@ local pick_admin_toolcaps = {
full_punch_interval = 0.1,
max_drop_level = 3,
groupcaps = {
unbreakable = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
fleshy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
choppy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
bendy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
cracky = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
crumbly = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
snappy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
unbreakable = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
fleshy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
choppy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
bendy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
cracky = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
crumbly = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
snappy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
},
damage_groups = {fleshy = 1000},
}