From 3e12ce50b236c5294020a03db3c6dfebe6249df0 Mon Sep 17 00:00:00 2001 From: Calinou Date: Thu, 11 Jul 2013 20:32:37 +0200 Subject: [PATCH] Map Tools --- LICENSE.txt | 13 + README.md | 2 - README.txt | 22 ++ _README.txt | 53 +++ aliases.lua | 93 +++++ depends.txt | 1 + init.lua | 472 +++++++++++++++++++++++++ locale/es.txt | 39 ++ locale/fr.txt | 47 +++ textures/fire_basic_flame.png | Bin 0 -> 847 bytes textures/fire_basic_flame_animated.png | Bin 0 -> 2250 bytes textures/invisible.png | Bin 0 -> 151 bytes textures/maptools_adminpick.png | Bin 0 -> 337 bytes textures/maptools_copper_coin.png | Bin 0 -> 506 bytes textures/maptools_gold_coin.png | Bin 0 -> 483 bytes textures/maptools_infinitefuel.png | Bin 0 -> 516 bytes textures/maptools_silver_coin.png | Bin 0 -> 504 bytes textures/maptools_smoke.png | Bin 0 -> 427 bytes textures/maptools_superapple.png | Bin 0 -> 197 bytes 19 files changed, 740 insertions(+), 2 deletions(-) create mode 100644 LICENSE.txt delete mode 100644 README.md create mode 100644 README.txt create mode 100644 _README.txt create mode 100644 aliases.lua create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 locale/es.txt create mode 100644 locale/fr.txt create mode 100644 textures/fire_basic_flame.png create mode 100644 textures/fire_basic_flame_animated.png create mode 100644 textures/invisible.png create mode 100644 textures/maptools_adminpick.png create mode 100644 textures/maptools_copper_coin.png create mode 100644 textures/maptools_gold_coin.png create mode 100644 textures/maptools_infinitefuel.png create mode 100644 textures/maptools_silver_coin.png create mode 100644 textures/maptools_smoke.png create mode 100644 textures/maptools_superapple.png diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..f42bd64 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,13 @@ ++---- zlib/libpng license ----+ + +Copyright (c) 2013 Calinou + +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. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. diff --git a/README.md b/README.md deleted file mode 100644 index a936d87..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -maptools -======== diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..4c15581 --- /dev/null +++ b/README.txt @@ -0,0 +1,22 @@ +Calinou's Minetest Mods +===================== + +Calinou's Mods for Minetest [http://minetest.net], a free and opensource Minecraft-like game. + +This Git repository is mostly made for servers; it allows easy updating. + +To install, just clone this repository somewhere, then copy the "calinou_mods" folder in the "mods/minetest" folder of Minetest's installation folder. + + + +Misc stuff +===================== + +All these mods' source codes, except More Ores are under the zlib/libpng license. More Ores is under the GNU GPLv3; the mods' textures are under the CC BY-SA 3.0 Unported. + +Mods' forum threads: +More Blocks: http://minetest.net/forum/viewtopic.php?id=509 +More Ores: http://minetest.net/forum/viewtopic.php?id=549 +Map Tools: http://minetest.net/forum/viewtopic.php?id=1882 +Doors+: http://minetest.net/forum/viewtopic.php?id=2059 +Stairs+: http://minetest.net/forum/viewtopic.php?id=2092 diff --git a/_README.txt b/_README.txt new file mode 100644 index 0000000..cfbe0b2 --- /dev/null +++ b/_README.txt @@ -0,0 +1,53 @@ +*** Item names for spawning the items using /give or /giveme *** + +Items: + +- admin_pick +Purple pickaxe, infinite durability, mines everything including unbreakable blocks instantly. Don't put this pickaxe in the hands of a griefer, of course. :) + +- infinitefuel +Fuel lasting for a (near)-infinite time. Don't worry about the "near" - it lasts for about 50 in-real-life years. + +- superapple +An apple which heals all 10 hearts. + +- 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: +A /!\ denotes an unpointable, unbreakable block; be very careful with them, they cannot be removed by hand (they can only be removed with WorldEdit). + +- (insert block name here)_u -- example: stone_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). + +- fullgrass +Unbrakable block with the "grass" texture on all sides. + +- playerclip +/!\ Invisible block, not pointable. + +- fullclip +Invisible block, pointable. + +- smoke_block +Some smoke (does not harm players or entities). + +- nobuild +/!\ Very basic building prevention. + +- nointeract +Prevents interacting through the block (interacting as in opening chests, furnaces, attacking entities...). + +- damage_(insert damage in half hearts here) +/!\ Damaging blocks. The damage is in half hearts and ranges from 1 to 5 (0.5 to 2.5 hearts damage every second). + +- killblock +/!\ Instant kill (deals 10 heart damage) blocks. + +- lightblock +/!\ Invisible non-solid block, prevents light from passing through. + +- lightbulb +/!\ Invisible non-solid block, emitting a good amount of light. diff --git a/aliases.lua b/aliases.lua new file mode 100644 index 0000000..9a89f17 --- /dev/null +++ b/aliases.lua @@ -0,0 +1,93 @@ +-- Aliases + +minetest.register_alias("adminpick", "maptools:pick_admin") +minetest.register_alias("adminpickaxe", "maptools:pick_admin") +minetest.register_alias("admin_pick", "maptools:pick_admin") +minetest.register_alias("admin_pickaxe", "maptools:pick_admin") +minetest.register_alias("pick_admin", "maptools:pick_admin") +minetest.register_alias("pickaxe_admin", "maptools:pick_admin") +minetest.register_alias("pickadmin", "maptools:pick_admin") +minetest.register_alias("pickaxeadmin", "maptools:pick_admin") +minetest.register_alias("adminpickdrops", "maptools:pick_admin_with_drops") +minetest.register_alias("adminpickaxedrops", "maptools:pick_admin_with_drops") +minetest.register_alias("admin_pick_drops", "maptools:pick_admin_with_drops") +minetest.register_alias("admin_pickaxe_drops", "maptools:pick_admin_with_drops") +minetest.register_alias("pick_admin_drops", "maptools:pick_admin_with_drops") +minetest.register_alias("pickaxe_admin_drops", "maptools:pick_admin_with_drops") +minetest.register_alias("pickadmindrops", "maptools:pick_admin_with_drops") +minetest.register_alias("pickaxeadmindrops", "maptools:pick_admin_with_drops") +minetest.register_alias("infinitefuel", "maptools:infinitefuel") +minetest.register_alias("infinite_fuel", "maptools:infinitefuel") +minetest.register_alias("ifuel", "maptools:infinitefuel") +minetest.register_alias("superapple", "maptools:superapple") +minetest.register_alias("super_apple", "maptools:superapple") +minetest.register_alias("sapple", "maptools:superapple") +minetest.register_alias("nobuild", "maptools:nobuild") +minetest.register_alias("nointeract", "maptools:nointeract") +minetest.register_alias("damage_1", "maptools:damage_1") +minetest.register_alias("damage_2", "maptools:damage_2") +minetest.register_alias("damage_3", "maptools:damage_3") +minetest.register_alias("damage_4", "maptools:damage_4") +minetest.register_alias("damage_5", "maptools:damage_5") +minetest.register_alias("pusher_1", "maptools:pusher_1") +minetest.register_alias("pusher_2", "maptools:pusher_2") +minetest.register_alias("pusher_3", "maptools:pusher_3") +minetest.register_alias("pusher_4", "maptools:pusher_4") +minetest.register_alias("pusher_5", "maptools:pusher_5") +minetest.register_alias("pusher_6", "maptools:pusher_6") +minetest.register_alias("pusher_7", "maptools:pusher_7") +minetest.register_alias("pusher_8", "maptools:pusher_8") +minetest.register_alias("pusher_9", "maptools:pusher_9") +minetest.register_alias("pusher_10", "maptools:pusher_10") +minetest.register_alias("killblock", "maptools:kill") +minetest.register_alias("kill_block", "maptools:kill") +minetest.register_alias("lightblock", "maptools:lightblock") +minetest.register_alias("light_block", "maptools:lightblock") +minetest.register_alias("lightbulb", "maptools:lightbulb") +minetest.register_alias("light_bulb", "maptools:lightbulb") +minetest.register_alias("playerclip", "maptools:playerclip") +minetest.register_alias("player_clip", "maptools:playerclip") +minetest.register_alias("pclip", "maptools:playerclip") +minetest.register_alias("fullclip", "maptools:fullclip") +minetest.register_alias("full_clip", "maptools:fullclip") +minetest.register_alias("fclip", "maptools:fullclip") +minetest.register_alias("full_clip", "maptools:fullclip") +minetest.register_alias("full_clip_face", "maptools:fullclip_face") +minetest.register_alias("fullclip_face", "maptools:fullclip_face") +minetest.register_alias("fullclipface", "maptools:fullclip_face") +minetest.register_alias("player_clip_bottom", "maptools:playerclip_bottom") +minetest.register_alias("playerclip_bottom", "maptools:playerclip_bottom") +minetest.register_alias("playerclipbottom", "maptools:playerclip_bottom") +minetest.register_alias("player_clip_top", "maptools:playerclip_top") +minetest.register_alias("playerclip_top", "maptools:playerclip_top") +minetest.register_alias("playercliptop", "maptools:playerclip_top") +minetest.register_alias("permanentfire", "maptools:permanent_fire") +minetest.register_alias("permanent_fire", "maptools:permanent_fire") +minetest.register_alias("pfire", "maptools:permanent_fire") +minetest.register_alias("fakefire", "maptools:fake_fire") +minetest.register_alias("fake_fire", "maptools:fake_fire") +minetest.register_alias("ffire", "maptools:fake_fire") +minetest.register_alias("igniter", "maptools:igniter") + +-- Unbreakable block aliases + +minetest.register_alias("stone_u", "maptools:stone") +minetest.register_alias("tree_u", "maptools:tree") +minetest.register_alias("cobble_u", "maptools:cobble") +minetest.register_alias("wood_u", "maptools:wood") +minetest.register_alias("sand_u", "maptools:sand") +minetest.register_alias("gravel_u", "maptools:gravel") +minetest.register_alias("brick_u", "maptools:brick") +minetest.register_alias("dirt_u", "maptools:dirt") +minetest.register_alias("glass_u", "maptools:glass") +minetest.register_alias("sandstone_u", "maptools:sandstone") +minetest.register_alias("desert_stone_u", "maptools:desert_stone") +minetest.register_alias("desertstone_u", "maptools:desert_stone") +minetest.register_alias("desert_sand_u", "maptools:desert_sand") +minetest.register_alias("desertsand_u", "maptools:desert_sand") +minetest.register_alias("leaves_u", "maptools:leaves") +minetest.register_alias("grass_u", "maptools:glass") +minetest.register_alias("fullgrass", "maptools:fullgrass") +minetest.register_alias("fullgrass_u", "maptools:fullgrass") +minetest.register_alias("mossycobble_u", "maptools:mossycobble") +minetest.register_alias("mossy_cobble_u", "maptools:mossycobble") diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..9a71f95 --- /dev/null +++ b/init.lua @@ -0,0 +1,472 @@ +-- Load translation library if intllib is installed + +local S +if (minetest.get_modpath("intllib")) then + dofile(minetest.get_modpath("intllib").."/intllib.lua") + S = intllib.Getter(minetest.get_current_modname()) + else + S = function ( s ) return s end +end + +dofile(minetest.get_modpath("maptools").."/aliases.lua") + +print(S("[maptools] loaded.")) + +--[[ +**** +Map Tools +by Calinou +Licensed under the zlib/libpng license for code and CC BY-SA for textures, see LICENSE.txt for info. +**** +--]] + +-- Redefine cloud so that admin pickaxe can mine it + +minetest.register_node(":default:cloud", { + description = S("Cloud"), + tiles = {"default_cloud.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_defaults(), +}) + +-- Items + +minetest.register_craft({ + type = "fuel", + recipe = "maptools:infinitefuel", + burntime = 1000000000, +}) + +-- Blocks + +minetest.register_node("maptools:stone", { + description = S("Unbreakable Stone"), + tiles = {"default_stone.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:tree", { + description = S("Unbreakable Tree"), + tiles = {"default_tree.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("maptools:dirt", { + description = S("Unbreakable Dirt"), + tiles = {"default_dirt.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("maptools:wood", { + description = S("Unbreakable Wooden Planks"), + tiles = {"default_wood.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("maptools:glass", { + description = S("Unbreakable Glass"), + drawtype = "glasslike", + tiles = {"default_glass.png"}, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("maptools:leaves", { + description = S("Unbreakable Leaves"), + drawtype = "allfaces_optional", + tiles = {"default_leaves.png"}, + paramtype = "light", + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("maptools:sand", { + description = S("Unbreakable Sand"), + tiles = {"default_sand.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("maptools:gravel", { + description = S("Unbreakable Gravel"), + tiles = {"default_gravel.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.45}, + }), +}) + +minetest.register_node("maptools:desert_sand", { + description = S("Unbreakable Desert Sand"), + tiles = {"default_desert_sand.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("maptools:sandstone", { + description = S("Unbreakable Sandstone"), + tiles = {"default_sandstone.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:desert_stone", { + description = S("Unbreakable Desert Stone"), + tiles = {"default_desert_stone.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:grass", { + description = S("Unbreakable Dirt with Grass"), + tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_node("maptools:fullgrass", { + description = S("Unbreakable Full Grass"), + tiles = {"default_grass.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_node("maptools:cobble", { + description = S("Unbreakable Cobblestone"), + tiles = {"default_cobble.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:mossycobble", { + description = S("Unbreakable Mossy Cobblestone"), + tiles = {"default_mossycobble.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:brick", { + description = S("Unbreakable Brick"), + tiles = {"default_brick.png"}, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("maptools:playerclip", { + description = S("Player Clip"), + drawtype = "airlike", + paramtype = "light", + pointable = false, + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:fullclip", { + description = S("Full Clip"), + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:playerclip", { + description = S("Player Clip"), + drawtype = "airlike", + paramtype = "light", + pointable = false, + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:fullclip_face", { + description = S("Full Clip Face"), + drawtype = "nodebox", + tiles = {"invisible.png"}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, + }, + groups = {unbreakable=1, not_in_creative_inventory=1, fall_damage_add_percent=-100}, +}) + +minetest.register_node("maptools:playerclip_bottom", { + description = S("Player Clip Bottom Face"), + drawtype = "nodebox", + tiles = {"invisible.png"}, + pointable = false, + paramtype = "light", + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, + }, + groups = {unbreakable=1, not_in_creative_inventory=1, fall_damage_add_percent=-100}, +}) + +minetest.register_node("maptools:playerclip_top", { + description = S("Player Clip Top Face"), + drawtype = "nodebox", + tiles = {"invisible.png"}, + pointable = false, + paramtype = "light", + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = {-0.5, 0.4999, -0.5, 0.5, 0.5, 0.5}, + }, + groups = {unbreakable=1, not_in_creative_inventory=1, fall_damage_add_percent=-100}, +}) + +for pusher_num=1,10,1 do +minetest.register_node("maptools:pusher_" .. pusher_num, { + description = S("Pusher: %s"):format(pusher_num), + drawtype = "nodebox", + tiles = {"invisible.png"}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, + }, + groups = {unbreakable=1, not_in_creative_inventory=1, fall_damage_add_percent=-100, bouncy=pusher_num*100}, +}) +end + +minetest.register_node("maptools:lightbulb", { + description = S("Light Bulb"), + drawtype = "airlike", + walkable = false, + pointable = false, + light_source = 15, + paramtype = "light", + buildable_to = true, + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:nobuild", { + description = S("Build Prevention"), + drawtype = "airlike", + walkable = false, + pointable = false, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:nointeract", { + description = S("Interact Prevention"), + drawtype = "airlike", + walkable = false, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:climb", { + description = S("Climb Block"), + drawtype = "airlike", + walkable = false, + climbable = true, + pointable = false, + buildable_to = true, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +for damage_num=1,5,1 do +minetest.register_node("maptools:damage_" .. damage_num, { + description = S("Damaging Block: %s"):format(damage_num), + drawtype = "airlike", + walkable = false, + pointable = false, + damage_per_second = damage_num, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) +end + +minetest.register_node("maptools:kill", { + description = S("Kill Block"), + drawtype = "airlike", + walkable = false, + pointable = false, + damage_per_second = 20, + paramtype = "light", + sunlight_propagates = true, + groups = {unbreakable=1, not_in_creative_inventory=1}, +}) + +minetest.register_node("maptools:smoke", { + description = S("Smoke Block"), + tiles = {"maptools_smoke.png"}, + drawtype = "allfaces_optional", + walkable = false, + paramtype = "light", + groups = {unbreakable=1, not_in_creative_inventory=1}, + post_effect_color = {a=127, r=127, g=127, b=127}, +}) + +minetest.register_node("maptools:ladder", { + description = S("Fake Ladder"), + drawtype = "signlike", + tiles = {"default_ladder.png"}, + inventory_image = "default_ladder.png", + wield_image = "default_ladder.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = { + type = "wallmounted", + }, + groups = {unbreakable=1, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("maptools:permanent_fire", { + description = S("Permanent Fire"), + 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, + groups = {unbreakable=1, not_in_creative_inventory=1}, + drop = '', + sunlight_propagates = true, + walkable = false, + damage_per_second = 4, +}) + +minetest.register_node("maptools:fake_fire", { + description = S("Fake Fire"), + 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, + groups = {unbreakable=1, not_in_creative_inventory=1}, + drop = '', + sunlight_propagates = true, + walkable = false, +}) + +minetest.register_node("maptools:igniter", { + drawtype = "airlike", + description = S("Igniter"), + paramtype = "light", + inventory_image = "fire_basic_flame.png", + groups = {igniter=2, unbreakable=1, not_in_creative_inventory=1}, + drop = '', + sunlight_propagates = true, + pointable = false, + walkable = false, +}) + +-- Items + +minetest.register_craftitem("maptools:copper_coin", { + description = S("Copper Coin"), + inventory_image = "maptools_copper_coin.png", + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_craftitem("maptools:silver_coin", { + description = S("Silver Coin"), + inventory_image = "maptools_silver_coin.png", + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_craftitem("maptools:gold_coin", { + description = S("Gold Coin"), + inventory_image = "maptools_gold_coin.png", + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_craftitem("maptools:infinitefuel", { + description = S("Infinite Fuel"), + inventory_image = "maptools_infinitefuel.png", +}) + +minetest.register_node("maptools:superapple", { + description = S("Super Apple"), + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"maptools_superapple.png"}, + inventory_image = "maptools_superapple.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + groups = {fleshy=3, dig_immediate=3, not_in_creative_inventory=1}, + on_use = minetest.item_eat(20), + sounds = default.node_sound_defaults(), +}) + +-- Tools + +minetest.register_tool("maptools:pick_admin", { + description = S("Admin Pickaxe"), + inventory_image = "maptools_adminpick.png", + groups = {not_in_creative_inventory=1}, + tool_capabilities = { + full_punch_interval = 0, + 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}, + } + }, +}) + +minetest.register_tool("maptools:pick_admin_with_drops", { + description = S("Admin Pickaxe With Drops"), + inventory_image = "maptools_adminpick.png", + groups = {not_in_creative_inventory=1}, + tool_capabilities = { + full_punch_interval = 0, + 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}, + } + }, +}) + +minetest.register_on_punchnode(function(pos, node, puncher) + if puncher:get_wielded_item():get_name() == "maptools:pick_admin" + and minetest.env: get_node(pos).name ~= "air" then + minetest.env:remove_node(pos) + end +end) diff --git a/locale/es.txt b/locale/es.txt new file mode 100644 index 0000000..1bc96f2 --- /dev/null +++ b/locale/es.txt @@ -0,0 +1,39 @@ +# 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 diff --git a/locale/fr.txt b/locale/fr.txt new file mode 100644 index 0000000..d137871 --- /dev/null +++ b/locale/fr.txt @@ -0,0 +1,47 @@ +# 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 diff --git a/textures/fire_basic_flame.png b/textures/fire_basic_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c2afda7adc180e68b3403f803dba72f00cf24e GIT binary patch literal 847 zcmV-V1F-ywP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RX1P2x;JF*&V4gdfG;Ymb6R5;6x zlU-<&cNE5d|2J=A^5)HF^U$HpWm8rh;C0 zw~I}r2;0OPwJ37~8O)27*)c%}MwHf8N!m0Y7?LJ2O_SqADO%>hb9H#m;W^K9;DOhu zqhSw6!=6{+@*i-g6Zt=)v6O?clw;Lg9SoUruCSn1fQ$V|Z+C=|zvdOdJAMa%7$~+m zItmb_=?ai+W-jbgq^xz@%?^fOM~hn|C{1DpH={O zM%=PC5u#qN6TOmC&BK;V-z#DbgwgWp68`TWDZ6Q~Xme0L(kB2jkEQ`=e6d!1ekYpV zB(y#VfISf={&s@K<{q@j#f$>TOwAG7;={Wq!sMrJNvsPjKgo)d97<7^MVdRbWshc_ zg^@a~*$mo>Z^J3H!!}4eiG68Niz(!{k43jTS5*0QU3nwJ0|vy2uRvoQbw002ovPDHLkV1gaximm_v literal 0 HcmV?d00001 diff --git a/textures/fire_basic_flame_animated.png b/textures/fire_basic_flame_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..f04447074de71688524bc72ed8a63b2996fe5b11 GIT binary patch literal 2250 zcmV;*2sQVKP)uX|20#*OnA3oCcz5bnZe&=!T?{mKA0G}gmEHU%js;|=HcH^W{d#ZF< z`Klk-O<9JuWx$a|rCGKwS#^AcRWEF(qjJ^@Zlie6RH#R@deJ?ohNo16=RF4Q4{7n% zaF87xjx(ju=7EHGo~u{Mrelp3{yn?wZJooych9wP{_|>ns-9(f(Nb&X=e}Ao<A+NEhNd-$WK{~6+AqMld=A*7Eewk|CKeQ7 zux0}AsSrygvEaAg#@IC*G{!Qh0?*76ugCPKewMOmpiXIEy;=a(()Y#Cd;^zY@ETF9 zwxH|yWhBEPz*CI=z-4LtW~j6VHTdQ)3MZjZ5Q)C)@ND*p%6z+*+l+R6)OH4EcecVc z-w9KV6DNQ9dz@I;ih@xFO~I4Wx9czfn*i6YA%LtAo1D@lHb`AGk0Z~<5ikMy zkvxQs25|qc*CX7u2fn{D={smLdNkNU<3fWjc~PCw!gJE8MBfxTCNc~VX8g8%pl z6i!$Gw+?%^AI90MMud|o;4e+!{P5#Ex~-P;cOT;eyQ_F&&l6dn?FP4<|EeTA3TcQ_ zCJN{2LYhMP)^N^pGF?TbkP^~aPHyD^v0$53oi&8XJW!k|JWvr2D5RB)){6mD*pq?> zip>Cq{lhV~$(f(A-4zdftL2Yu%E?L_RdX8TprQY}eL=SFLV!j5D(DN%f(J(zn)u*1 z?-MN#JmugN%Jh73MX|UGpqR_d^o-E85DIHeux#yS3J<7q|MgEX6%Skvqcpg5>U_-1 zlX+$-<~0a(48dkG!&qO1iH=@$oDQJ4QU|BIRFqcRt%%-;V4@&$Ga4y_ctDkvl=sXL zrbaAcb?L2azASIV-oq;IbiB6T$F4A6$#;5bf=Q=G+ZvpRJb0 zs1c6*p&r45p_Y#!ThdJuP>2UqS@2+~!~-df{<)5$We8&nwCLP<3JaQlg0ZfU-~l5Z z6g%t~=(&obWe!}IhMbN{jKGCOSQ};o2BqlDWzXBf| zvLoReM}B@jnBz@$=wu4p-fIOT9z6ZR;}Vv2a%++kwy}-zHy6ua+WHTf!h+xVZ?2JY z;ah%Z3TGvhsmhE@n9_6FNKS66d@B!#1)qxt)Yya48mRDqLR#U$xtf!+lFr;@m6T9M&FMjsg0c%k-iXdXJk+%NVqMIR6k z4Api-dc){yK8Nm>4$+guNT0Z?hzFz(*wTZHU=n|;HuF{}q)8u~9c)G0E2o4$phWth zWzB!Yvy8NFNUuxM2j#1l2qVyTS3HRQ(;_)Y^MIfH7H9XrEnX|}AfpeY|8H+FVPc%4 zsX^j_qz{M(8=WS;H#r3l$ce%Na>hO@4`yNlIaI>=j!QfhzN@70VDb{*Tr=~gV{%Va zI|n0T;$D@=OHzNTR*6J(P1Xlz;*zSBl4gs8@y?_HyQHOkxm9+sdQ~-=uEjVl@1@06 z=(u_bRc@0|>PiC{pwRM8M%rx9oq9nap-l&|fG(2zlt(YTrjL*vlIT2kVZ6HcXDW&C@{cf0%M*pc zJxC4?!~ATGxH6MMtxtTggm>>aEqZd#a|^+u`9dEU{L*el7sbUBXW{sv7bRwo&)<8C-O`?^(u|G+r(_4j0>#O=J5Lx*6@>_29uOf- z|0i@Ks7p0s@Orn%M_-T72m5|@3hbjlmh<|dVqs^SPBZ@BWdbe~(%SS6n3ni|ANUZD zNW3_C{D>%9KKd0LK70V0`X;GQ!_sG&=K@!cWh(1BqJT^<5z_o`OE~F+g*)Vl-{?HX zw+u+nV!t3M6xuToRQMLT+X@rtP8Vqey5c(|HIq)ymE6?RitRJqbLR*0bmh(ua_0xR z^MfhSaVK$+J3q*sALPyta_0vMI&$X+x$^^U?)+fN^TgcwL7Eb|^Ml;^LGJwE|K$AO Yf4AIL0k9$f0000007*qoM6N<$f@C60#Q*>R literal 0 HcmV?d00001 diff --git a/textures/invisible.png b/textures/invisible.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e875225706b9a6c835ab1f5d9d76ac140dbb1f GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}bl&H|6fVg?3oVGw3ym^DWND9B#o z>FdgVhfPFS!u;;lEal|aXmQ!2!LEx2FAG0T2??7gQu&X%Q~loCIFkZAu0d> literal 0 HcmV?d00001 diff --git a/textures/maptools_adminpick.png b/textures/maptools_adminpick.png new file mode 100644 index 0000000000000000000000000000000000000000..deddd5b9980623738d4f2bb1230b987122290b82 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sDEfH31!Z9ZwBAbW|YuPgfUdZ5$m{cC$}#Iv>2`!J}9wM;CrUnO7Gstt=^f{eFrfr^&{B znksv~@BgoSU_RHC#v3lTnqye)7#C&=2#6?OW2!xD!pSjdf{J424VT9jm)>v{JD${b zyk5${aBkgkIObiDO{F(72(yRULEFZlz zZvD-Zn5<7LoDX{STW6t$MWXlETV*o0l=6UrxJ6=WHvB%VA>> cH<-SUVL^$F(>QL70(Y)*K0-AbW|YuPgf-9_h&rvim!GeaUuobz*Y zQ}arITm}Z`qSVBa)D(sC%#sWRcTeAd6une-pml+sE{-7hbjBTfHg|krT`^_O8x%lo~6+#PyIPGfPA89f8zct_EWb{W=a$)}0-(peK zzOnIH3>V(9U8@R}h*&y}<8Me{sFLy>o3uCcSw&l$9G6Xqp0`WWAk8<)V=iCuL5~ye ziEiTSMcOJ^r#rtBeZDYEGFo)zruVE4)B4@muCX3o(|m)a)a`%=gXm17*2QZrV;Xi%>n=R5?*lFE4nK r2iN!dt*7+=&WUpE=$$g{dHqrKn+glUukY<%4+?cpS3j3^P6QL70(Y)*K0-AbW|YuPgf|6#R&Qe#=(H}{(D9)0 za6q;03vY%7k62#;jZ;AZtG=BN6A@dxJ}1$pZi?UYbHRI5%-uG|yxS96HS_GUj}FIb z&L5nyYmxEItIo50<{gPzczdtOpF6*2UngCw($>#t7 literal 0 HcmV?d00001 diff --git a/textures/maptools_infinitefuel.png b/textures/maptools_infinitefuel.png new file mode 100644 index 0000000000000000000000000000000000000000..5eda6ffe678711625fe762be337965b280fd82e8 GIT binary patch literal 516 zcmV+f0{i`mP)Px#24YJ`L;(K)ng9U9qe0aG000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iye> z3^pprAAp_!0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~00047 zNklS6otPe{Yk43s!5TeQj4^-3*X44PvFKU5Jla)5p?0Z_z-T2p;V+a zF_Rk9>2(n;+O%5r!f=^$?>Td3E(8AzV-7Bh_8Y$-&*T`tBxiW$1ThTpJP!cNvVIbf zS%Ap(hP2ylkqcV@vF$Y99HjO8Q$()UMXpw*Ua!j+2LQZ0G8_((*95tAa9tOGMrw?5 z0j%8~#k~j-AtNw~LZT?bC_3z%ZE|;%Hsvj7G#V@~FL8e|rhoiQ7={4kJ`3DFKpe;D z1p56xYx^ep9P}6pg#y?v-hTYv9b_GZPigK2pp>FgsjzjpNq%J;$8o^S&mBkRRco~x ztyYV{U_cm#_`Z+UI>Y~PVB~UNZbJ|RXst0#lWw;=lbo^BY&PX%q}6IwI-SmBKegto z*tRXDQVGxV7>!2wzW?pX=5#el5~Ex$qm)7^wdm*jd%OYcOo|AX?S0Y!0000QL70(Y)*K0-AbW|YuPgf&Ut6Ay8wk`GeaUuobz*Y zQ}arITm}Z`qSVBa)D(sC%#sWRcTeAd6une-pmqM9E{-7P2S|sq^_Vdp<``)iy#ntfnXOCgq*Q&L4TyMTtN9u?jkq{JQShZ@= zx@?9m*J9R(hpi5MbaP>YVcW9I6PtJ%e*f+3NLcHt*?Mi(^UptPTNY`gn9XJkn5OD` z*+8oI#V)?*GNrNV8*jfoRv{q8{&c&-T5&Et6f5WlGTf_{80JPo)?so;Gq}St_FB z)MMzoKSnQq`4#8Jj}<)~DwD2RJ+1StxBMHiTWw`z2Q<9D9k-w{an^LB{Ts5%5cvz literal 0 HcmV?d00001 diff --git a/textures/maptools_smoke.png b/textures/maptools_smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..db082f0ad764cb6f3a8fd141433eb5b032b93f5a GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^MG7 zpy)%@2|y9f0*}aI1_o|n5N2eUHAey{$X?><>&kwIl~;gUZ^N=MU7(O`W=KSdbAE1a zYF-JD%fR4Vl$uzQnxasiS(2gP?&%wlqL<1Jw2sNs#WBR<^xELvS*;EtGM-GFH*PLF zvp-XHpZpKK8pW<8)gS4a!8dL%;mnzp@#Wns(+Rqn~WlrJLKI#!P!!EWl#Daarbi`&s4; z6)X(bOLw*^a2yh6;A2>p`77u4wA)f2Z2mJg%zpl}_Mu_AbX(%v&`{fXv%hk=mu9g5 z)d(@X*p;XHYM0-yeal-Sr%hb@;b~Uas#PyUN@FLVJ^P+xTkiT=5!dO*Q}r%Bl>5`J z$Z()grpQ&NOUd%Djcec^-Fvwk%j6l36~+{LPWmQudee+W)tUPkX9Sfk-|}VNCQvYW My85}Sb4q9e0P^{wL;wH) literal 0 HcmV?d00001 diff --git a/textures/maptools_superapple.png b/textures/maptools_superapple.png new file mode 100644 index 0000000000000000000000000000000000000000..146d15191b668fc4356c67ec8f0d7d10caa4171c GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!tb!bdBGEs+Ie|j1o-U3d7N?UF zBv=nK7(AL{Iq8dh=kX&6#_#Q49$PHsw1`_m;-B#1X@c{g<-04$=tmdKI;Vst0K^PEc>n+a literal 0 HcmV?d00001