diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0830e62 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +# 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.0.0 - 2017-02-19 + +- Initial versioned release. + +[Unreleased]: https://github.com/minetest-mods/maptools/compare/v1.0.0...HEAD diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f656b22 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,10 @@ +# Contributing to Map Tools + +Thank you for your interest in Map Tools! Before contributing, +be sure to know about these few guidelines: + +- Contributions have to be licensed under the zlib license (or compatible) + for code, and CC BY-SA 3.0 (or compatible) for assets. +- Make sure to update the changelog, keeping the + [changelog format](http://keepachangelog.com/en/1.0.0/) we use. +- Don't bump the version yourself. Maintainers will do this when necessary. diff --git a/NODES.md b/NODES.md index f5ce3cc..5e0c079 100755 --- a/NODES.md +++ b/NODES.md @@ -1,45 +1,26 @@ -Item names for spawning the items using /give or /giveme -======================================================== +# Item names for spawning the items using /give or /giveme -Items ------ +## 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`: 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. -* `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 ------- +## 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. +- `(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. diff --git a/README.md b/README.md index 3a428b7..7a14122 100755 --- a/README.md +++ b/README.md @@ -1,11 +1,73 @@ -Map Tools -========= +# Map Tools -Map Tools for Minetest , a free/libre infinite +Map Tools for [Minetest](https://www.minetest.net/), a free and open source infinite world block sandbox game. -To install, just clone this repository into your "mods" directory. +[**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=1882) -Map Tools code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported. +## Installation -**Forum topic:** +### Download the mod + +To install Map Tools, clone this Git repository into your Minetest's `mods/` +directory: + +``` +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** necessary to do, else, it won't work! + +### Enable the mod + +Once you have installed Map Tools, you need to enable it in Minetest. +The procedure is as follows: + +#### Using the client's main menu + +This is the easiest way to enable Map Tools when playing in singleplayer +(or on a server hosted from a client). + +1. Start Minetest and switch to the **Local Game** tab. +2. Select the world you want to enable Map Tools in. +3. Click **Configure**, then enable `maptools` by double-clicking it + (or ticking the **Enabled** checkbox). +4. Save the changes, then start a game on the world you enabled Map Tools on. +5. Map Tools should now be running on your world. + +#### Using a text editor + +This is the recommended way to enable the mod on a server without using a GUI. + +1. Make sure Minetest is not currently running (else, it will overwrite + the changes when exiting). +2. Open the world's `world.mt` file using a text editor. +3. Add the following line at the end of the file: + +``` +load_mod_maptools = true +``` + +If the line is already present in the file, then replace `false` with `true` on that line. + +4. Save the file, then start a game on the world you enabled Map Tools on. +5. Map Tools should now be running on your world. + +## Version compatibility + +Map Tools is currently primarily tested with Minetest 0.4.16. +It may or may not work with newer or older versions. Issues arising in older +versions than 0.4.16 will generally not be fixed. + +## License + +Copyright © 2012-2017 Hugo Locurcio and contributors + +- Map Tools code is licensed under the zlib license, see + [`LICENSE.md`](LICENSE.md) for details. +- Unless otherwise specified, Map Tools textures are licensed under + [CC BY-SA 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/). diff --git a/default_nodes.lua b/default_nodes.lua index afd47dd..44c9502 100755 --- a/default_nodes.lua +++ b/default_nodes.lua @@ -17,6 +17,7 @@ minetest.register_node("maptools:stone", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:stonebrick", { @@ -27,6 +28,7 @@ minetest.register_node("maptools:stonebrick", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:tree", { @@ -37,7 +39,8 @@ minetest.register_node("maptools:tree", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_wood_defaults(), - on_place = minetest.rotate_node + on_place = minetest.rotate_node, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:jungletree", { @@ -48,7 +51,8 @@ minetest.register_node("maptools:jungletree", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_wood_defaults(), - on_place = minetest.rotate_node + on_place = minetest.rotate_node, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:cactus", { @@ -59,7 +63,8 @@ minetest.register_node("maptools:cactus", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_wood_defaults(), - on_place = minetest.rotate_node + on_place = minetest.rotate_node, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:papyrus", { @@ -80,6 +85,7 @@ minetest.register_node("maptools:papyrus", { }, groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_leaves_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:dirt", { @@ -90,6 +96,7 @@ minetest.register_node("maptools:dirt", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_dirt_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:wood", { @@ -100,6 +107,7 @@ minetest.register_node("maptools:wood", { 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:junglewood", { @@ -110,6 +118,7 @@ minetest.register_node("maptools:junglewood", { 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:glass", { @@ -123,6 +132,7 @@ minetest.register_node("maptools:glass", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_glass_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:leaves", { @@ -135,6 +145,7 @@ minetest.register_node("maptools:leaves", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_leaves_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:sand", { @@ -145,6 +156,7 @@ minetest.register_node("maptools:sand", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_sand_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:gravel", { @@ -158,6 +170,7 @@ minetest.register_node("maptools:gravel", { 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", { @@ -168,6 +181,7 @@ minetest.register_node("maptools:clay", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_dirt_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:desert_sand", { @@ -178,6 +192,7 @@ minetest.register_node("maptools:desert_sand", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_sand_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:sandstone", { @@ -188,6 +203,7 @@ minetest.register_node("maptools:sandstone", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:sandstone_brick", { @@ -198,6 +214,7 @@ minetest.register_node("maptools:sandstone_brick", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) -- Compatibility for change made there ^ minetest.register_alias("maptools:sandstonebrick","maptools:sandstone_brick") @@ -210,6 +227,7 @@ minetest.register_node("maptools:desert_stone", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:desert_cobble", { @@ -220,6 +238,7 @@ minetest.register_node("maptools:desert_cobble", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:desert_stonebrick", { @@ -230,6 +249,7 @@ minetest.register_node("maptools:desert_stonebrick", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:grass", { @@ -243,6 +263,7 @@ minetest.register_node("maptools:grass", { sounds = default.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain = 0.4}, }), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:fullgrass", { @@ -255,6 +276,7 @@ minetest.register_node("maptools:fullgrass", { 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 @@ -274,6 +296,7 @@ for slab_num = 1,3,1 do 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 @@ -285,6 +308,7 @@ minetest.register_node("maptools:cobble", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:mossycobble", { @@ -295,6 +319,7 @@ minetest.register_node("maptools:mossycobble", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:brick", { @@ -305,6 +330,7 @@ minetest.register_node("maptools:brick", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:coalblock", { @@ -315,6 +341,7 @@ minetest.register_node("maptools:coalblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) @@ -326,6 +353,7 @@ minetest.register_node("maptools:steelblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:goldblock", { @@ -336,6 +364,7 @@ minetest.register_node("maptools:goldblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:copperblock", { @@ -346,6 +375,7 @@ minetest.register_node("maptools:copperblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:bronzeblock", { @@ -356,6 +386,7 @@ minetest.register_node("maptools:bronzeblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) minetest.register_node("maptools:diamondblock", { @@ -366,6 +397,7 @@ minetest.register_node("maptools:diamondblock", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_stone_defaults(), + on_drop = maptools.drop_msg }) -- Farming: @@ -378,6 +410,7 @@ minetest.register_node("maptools:soil_wet", { 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 }) minetest.register_node("maptools:desert_sand_soil_wet", { @@ -388,6 +421,7 @@ minetest.register_node("maptools:desert_sand_soil_wet", { 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 }) -- Fence: diff --git a/init.lua b/init.lua index 12f089b..e9ecdd8 100755 --- a/init.lua +++ b/init.lua @@ -20,6 +20,11 @@ maptools.intllib = S local modpath = minetest.get_modpath("maptools") +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 + dofile(modpath .. "/config.lua") dofile(modpath .. "/aliases.lua") dofile(modpath .. "/craftitems.lua") diff --git a/nodes.lua b/nodes.lua index e0510cb..6f0104f 100755 --- a/nodes.lua +++ b/nodes.lua @@ -16,6 +16,7 @@ minetest.register_node(":default:cloud", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_defaults(), + on_drop = maptools.drop_msg }) -- Nodes @@ -30,6 +31,7 @@ minetest.register_node("maptools:black", { 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", { @@ -41,6 +43,7 @@ minetest.register_node("maptools:white", { 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", { @@ -54,6 +57,7 @@ minetest.register_node("maptools:playerclip", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:fake_walkable", { @@ -74,6 +78,7 @@ minetest.register_node("maptools:fake_walkable", { }, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:fullclip", { @@ -86,6 +91,7 @@ minetest.register_node("maptools:fullclip", { 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", { @@ -105,6 +111,7 @@ minetest.register_node("maptools:fake_walkable_pointable", { }, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:ignore_like", { @@ -117,6 +124,7 @@ minetest.register_node("maptools:ignore_like", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:ignore_like_no_clip", { @@ -130,6 +138,7 @@ minetest.register_node("maptools:ignore_like_no_clip", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) @@ -144,6 +153,7 @@ minetest.register_node("maptools:ignore_like_no_point", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:ignore_like_no_clip_no_point", { @@ -158,6 +168,7 @@ minetest.register_node("maptools:ignore_like_no_clip_no_point", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:fullclip_face", { @@ -176,6 +187,7 @@ minetest.register_node("maptools:fullclip_face", { }, 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", { @@ -194,6 +206,7 @@ minetest.register_node("maptools:playerclip_bottom", { }, 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", { @@ -212,6 +225,7 @@ minetest.register_node("maptools:playerclip_top", { }, 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 @@ -231,6 +245,7 @@ minetest.register_node("maptools:pusher_" .. pusher_num, { }, 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 @@ -247,6 +262,7 @@ minetest.register_node("maptools:lightbulb", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:nobuild", { @@ -261,6 +277,7 @@ minetest.register_node("maptools:nobuild", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:nointeract", { @@ -274,6 +291,7 @@ minetest.register_node("maptools:nointeract", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:climb", { @@ -289,6 +307,7 @@ minetest.register_node("maptools:climb", { 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 @@ -305,6 +324,7 @@ minetest.register_node("maptools:damage_" .. damage_num, { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) end @@ -321,6 +341,7 @@ minetest.register_node("maptools:kill", { sunlight_propagates = true, drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:smoke", { @@ -334,6 +355,7 @@ minetest.register_node("maptools:smoke", { 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", { @@ -354,16 +376,28 @@ minetest.register_node("maptools:ladder", { drop = "", groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sounds = default.node_sound_wood_defaults(), + on_drop = maptools.drop_msg }) -local permafire = table.copy(minetest.registered_nodes["fire:basic_flame"]) -permafire.damage_per_second = 4 -permafire.stack_max = 10000 -permafire.range = 12 -permafire.description = S("Permanent Fire") -permafire.groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative} - -minetest.register_node("maptools:permanent_fire", permafire) +minetest.register_node("maptools:permanent_fire", { + description = S("Permanent Fire"), + range = 12, + stack_max = 10000, + drawtype = "plantlike", + paramtype = "light", + tiles = {{ + name="fire_basic_flame_animated.png", + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1}, + }}, + 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", { description = S("Fake Fire"), @@ -381,6 +415,7 @@ minetest.register_node("maptools:fake_fire", { groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative}, sunlight_propagates = true, walkable = false, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:igniter", { @@ -396,6 +431,7 @@ minetest.register_node("maptools:igniter", { sunlight_propagates = true, pointable = false, walkable = false, + on_drop = maptools.drop_msg }) minetest.register_node("maptools:superapple", { @@ -426,9 +462,4 @@ minetest.register_node("maptools:superapple", { groups = {fleshy=3, dig_immediate=3, not_in_creative_inventory = 0, flammable = 2, leafdecay = 3, leafdecay_drop = 1}, on_use = minetest.item_eat(20), sounds = default.node_sound_defaults(), - after_place_node = function(pos, placer, itemstack) - if placer:is_player() then - minetest.set_node(pos, {name = "maptools:superapple", param2= 1}) - end - end, }) diff --git a/tools.lua b/tools.lua index 6ce8b6c..1e898ad 100755 --- a/tools.lua +++ b/tools.lua @@ -28,6 +28,7 @@ minetest.register_tool("maptools:pick_admin", { }, damage_groups = {fleshy = 1000}, }, + on_drop = maptools.drop_msg }) minetest.register_tool("maptools:pick_admin_with_drops", { @@ -49,6 +50,7 @@ minetest.register_tool("maptools:pick_admin_with_drops", { }, damage_groups = {fleshy = 1000}, }, + on_drop = maptools.drop_msg }) minetest.register_on_punchnode(function(pos, node, puncher) @@ -56,6 +58,6 @@ minetest.register_on_punchnode(function(pos, node, puncher) and minetest.get_node(pos).name ~= "air" then minetest.log("action", puncher:get_player_name() .. " digs " .. minetest.get_node(pos).name .. " at " .. minetest.pos_to_string(pos) .. " using an Admin Pickaxe.") minetest.remove_node(pos) -- The node is removed directly, which means it even works on non-empty containers and group-less nodes. - nodeupdate(pos) -- Run node update actions like falling nodes. + minetest.check_for_falling(pos) -- Run node update actions like falling nodes. end end)