Merge remote-tracking branch 'upstream/master'

This commit is contained in:
bri cassa 2022-08-26 15:10:32 +02:00
commit c4d54b083a
4 changed files with 53 additions and 187 deletions

View File

@ -59,7 +59,7 @@ end
minetest.register_craftitem("maptools:infinitefuel", { minetest.register_craftitem("maptools:infinitefuel", {
description = S("Infinite Fuel"), description = S("Infinite Fuel"),
inventory_image = "maptools_infinitefuel.png", inventory_image = "maptools_infinitefuel.png",
stack_max = 10000, stack_max = 65535,
groups = {not_in_creative_inventory = maptools.creative}, groups = {not_in_creative_inventory = maptools.creative},
}) })

View File

@ -6,26 +6,10 @@ Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = maptools.S local S = maptools.S
local register_node = maptools.register_node
maptools.creative = maptools.config["hide_from_creative_inventory"] maptools.creative = maptools.config["hide_from_creative_inventory"]
local function register_node(name, def)
-- Increase the interaction range when holding Map Tools nodes to make building easier.
def.range = 12
def.stack_max = 10000
def.drop = ""
if def.groups then
def.groups.unbreakable = 1
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
register_node("maptools:stone", { register_node("maptools:stone", {
description = S("Unbreakable Stone"), description = S("Unbreakable Stone"),
tiles = {"default_stone.png"}, tiles = {"default_stone.png"},

View File

@ -20,6 +20,25 @@ maptools.drop_msg = function(itemstack, player)
minetest.chat_send_player(name, S("[maptools] tools/nodes do not drop!")) minetest.chat_send_player(name, S("[maptools] tools/nodes do not drop!"))
end 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 .. "/config.lua")
dofile(modpath .. "/aliases.lua") dofile(modpath .. "/aliases.lua")
dofile(modpath .. "/craftitems.lua") dofile(modpath .. "/craftitems.lua")

201
nodes.lua
View File

@ -6,63 +6,44 @@ Licensed under the zlib license. See LICENSE.md for more information.
--]] --]]
local S = maptools.S local S = maptools.S
local register_node = maptools.register_node
maptools.creative = maptools.config["hide_from_creative_inventory"] maptools.creative = maptools.config["hide_from_creative_inventory"]
-- Redefine cloud so that the admin pickaxe can mine it -- Redefine cloud so that the admin pickaxe can mine it
minetest.register_node(":default:cloud", { register_node(":default:cloud", {
description = S("Cloud"), description = S("Cloud"),
tiles = {"default_cloud.png"}, tiles = {"default_cloud.png"},
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
on_drop = maptools.drop_msg
}) })
-- Nodes -- Nodes
minetest.register_node("maptools:black", { register_node("maptools:black", {
description = S("Black"), description = S("Black"),
range = 12,
stack_max = 10000,
tiles = {"black.png"}, tiles = {"black.png"},
drop = "",
post_effect_color = {a=255, r=0, g=0, b=0}, 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(), sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
}) })
minetest.register_node("maptools:white", { register_node("maptools:white", {
description = S("White"), description = S("White"),
range = 12,
stack_max = 10000,
tiles = {"white.png"}, tiles = {"white.png"},
drop = "",
post_effect_color = {a=255, r=128, g=128, b=128}, 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(), sounds = default.node_sound_stone_defaults(),
on_drop = maptools.drop_msg
}) })
minetest.register_node("maptools:playerclip", { register_node("maptools:playerclip", {
description = S("Player Clip"), description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png", inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike", drawtype = "airlike",
paramtype = "light", paramtype = "light",
pointable = false, pointable = false,
sunlight_propagates = true, 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"), description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png", inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike", drawtype = "airlike",
paramtype = "light", paramtype = "light",
@ -74,28 +55,18 @@ minetest.register_node("maptools:fake_walkable", {
{0, 0, 0, 0, 0, 0}, {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"), description = S("Full Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_blue.png", inventory_image = "default_steel_block.png^dye_blue.png",
drawtype = "airlike", drawtype = "airlike",
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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"), description = S("Player Clip"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png", inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike", drawtype = "airlike",
paramtype = "light", paramtype = "light",
@ -106,72 +77,47 @@ minetest.register_node("maptools:fake_walkable_pointable", {
{0, 0, 0, 0, 0, 0}, {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"), description = S("Ignore-like"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_pink.png", inventory_image = "default_steel_block.png^dye_pink.png",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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", { register_node("maptools:ignore_like_no_clip", {
description = S("Ignore-like (no clip)"), description = S("Ignore-like (no clip)"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_violet.png", inventory_image = "default_steel_block.png^dye_violet.png",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
sunlight_propagates = true, 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_point", { register_node("maptools:ignore_like_no_point", {
description = S("Ignore-like (no point)"), description = S("Ignore-like (no point)"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_violet.png", inventory_image = "default_steel_block.png^dye_violet.png",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
paramtype = "light", paramtype = "light",
pointable = false, pointable = false,
sunlight_propagates = true, 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", { register_node("maptools:ignore_like_no_clip_no_point", {
description = S("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", inventory_image = "default_steel_block.png^dye_pink.png",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
pointable = false, pointable = false,
sunlight_propagates = true, 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"), description = S("Full Clip Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_white.png", inventory_image = "default_steel_block.png^dye_white.png",
drawtype = "nodebox", drawtype = "nodebox",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
@ -182,19 +128,13 @@ minetest.register_node("maptools:fullclip_face", {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
}, },
drop = "",
groups = { groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100, 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"), description = S("Player Clip Bottom Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_orange.png", inventory_image = "default_steel_block.png^dye_orange.png",
drawtype = "nodebox", drawtype = "nodebox",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
@ -205,19 +145,13 @@ minetest.register_node("maptools:playerclip_bottom", {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
}, },
drop = "",
groups = { groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100, 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"), description = S("Player Clip Top Face"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_yellow.png", inventory_image = "default_steel_block.png^dye_yellow.png",
drawtype = "nodebox", drawtype = "nodebox",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
@ -228,21 +162,15 @@ minetest.register_node("maptools:playerclip_top", {
type = "fixed", type = "fixed",
fixed = {-0.5, 0.4999, -0.5, 0.5, 0.5, 0.5}, fixed = {-0.5, 0.4999, -0.5, 0.5, 0.5, 0.5},
}, },
drop = "",
groups = { groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100, fall_damage_add_percent = -100,
}, },
on_drop = maptools.drop_msg
}) })
for pusher_num=1,10,1 do 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), description = S("Pusher (%s)"):format(pusher_num),
range = 12, inventory_image = "default_steel_block.png^default_apple.png",
stack_max = 10000,
inventory_image = "default_steel_block.png^default_apple.png",
drawtype = "nodebox", drawtype = "nodebox",
tiles = {"invisible.png"}, tiles = {"invisible.png"},
paramtype = "light", paramtype = "light",
@ -252,21 +180,15 @@ for pusher_num=1,10,1 do
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
}, },
drop = "",
groups = { groups = {
unbreakable = 1,
not_in_creative_inventory = maptools.creative,
fall_damage_add_percent = -100, fall_damage_add_percent = -100,
bouncy = pusher_num * 100, bouncy = pusher_num * 100,
}, },
on_drop = maptools.drop_msg
}) })
end end
minetest.register_node("maptools:lightbulb", { register_node("maptools:lightbulb", {
description = S("Light Bulb"), description = S("Light Bulb"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_mese_crystal_fragment.png", inventory_image = "default_steel_block.png^default_mese_crystal_fragment.png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
@ -274,44 +196,29 @@ minetest.register_node("maptools:lightbulb", {
light_source = default.LIGHT_MAX, light_source = default.LIGHT_MAX,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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"), description = S("Build Prevention"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_flint.png", inventory_image = "default_steel_block.png^default_flint.png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
pointable = false, pointable = false,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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"), description = S("Interact Prevention"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_bush_stem.png", inventory_image = "default_steel_block.png^default_bush_stem.png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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"), description = S("Climb Block"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^default_ladder_wood.png", inventory_image = "default_steel_block.png^default_ladder_wood.png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
@ -319,16 +226,11 @@ minetest.register_node("maptools:climb", {
pointable = false, pointable = false,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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 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), description = S("Damaging Block (%s)"):format(damage_num),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^farming_cotton_" .. damage_num .. ".png", inventory_image = "default_steel_block.png^farming_cotton_" .. damage_num .. ".png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
@ -336,16 +238,11 @@ minetest.register_node("maptools:damage_" .. damage_num, {
damage_per_second = damage_num, damage_per_second = damage_num,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
}) })
end end
minetest.register_node("maptools:kill", { register_node("maptools:kill", {
description = S("Kill Block"), description = S("Kill Block"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_black.png", inventory_image = "default_steel_block.png^dye_black.png",
drawtype = "airlike", drawtype = "airlike",
walkable = false, walkable = false,
@ -353,29 +250,19 @@ minetest.register_node("maptools:kill", {
damage_per_second = 20, damage_per_second = 20,
paramtype = "light", paramtype = "light",
sunlight_propagates = true, 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"), description = S("Smoke Block"),
range = 12,
stack_max = 10000,
tiles = {"maptools_smoke.png"}, tiles = {"maptools_smoke.png"},
drawtype = "allfaces_optional", drawtype = "allfaces_optional",
walkable = false, walkable = false,
paramtype = "light", paramtype = "light",
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
post_effect_color = {a=192, r=96, g=96, b=96}, 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"), description = S("Fake Ladder"),
range = 12,
stack_max = 10000,
drawtype = "signlike", drawtype = "signlike",
tiles = {"default_ladder_wood.png"}, tiles = {"default_ladder_wood.png"},
inventory_image = "default_ladder_wood.png", inventory_image = "default_ladder_wood.png",
@ -387,16 +274,11 @@ minetest.register_node("maptools:ladder", {
selection_box = { selection_box = {
type = "wallmounted", type = "wallmounted",
}, },
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sounds = default.node_sound_wood_defaults(), 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"), description = S("Permanent Fire"),
range = 12,
stack_max = 10000,
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", paramtype = "light",
tiles = {{ tiles = {{
@ -405,18 +287,13 @@ minetest.register_node("maptools:permanent_fire", {
}}, }},
inventory_image = "fire_basic_flame.png", inventory_image = "fire_basic_flame.png",
light_source = 14, light_source = 14,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
damage_per_second = 4, damage_per_second = 4,
on_drop = maptools.drop_msg
}) })
minetest.register_node("maptools:fake_fire", { register_node("maptools:fake_fire", {
description = S("Fake Fire"), description = S("Fake Fire"),
range = 12,
stack_max = 10000,
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", paramtype = "light",
tiles = {{ tiles = {{
@ -425,33 +302,24 @@ minetest.register_node("maptools:fake_fire", {
}}, }},
inventory_image = "fire_basic_flame.png", inventory_image = "fire_basic_flame.png",
light_source = 14, light_source = 14,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
on_drop = maptools.drop_msg
}) })
minetest.register_node("maptools:igniter", { register_node("maptools:igniter", {
drawtype = "airlike", drawtype = "airlike",
range = 12,
stack_max = 10000,
description = S("Igniter"), description = S("Igniter"),
paramtype = "light", paramtype = "light",
inventory_image = "fire_basic_flame.png", inventory_image = "fire_basic_flame.png",
drop = "", groups = {igniter=2},
groups = {igniter=2, unbreakable = 1, not_in_creative_inventory = maptools.creative},
sunlight_propagates = true, sunlight_propagates = true,
pointable = false, pointable = false,
walkable = false, walkable = false,
on_drop = maptools.drop_msg
}) })
minetest.register_node("maptools:superapple", { register_node("maptools:superapple", {
description = S("Super Apple"), description = S("Super Apple"),
range = 12, drawtype = "plantlike",
stack_max = 99,
drawtype = "nodebox",
visual_scale = 1.0, visual_scale = 1.0,
tiles = {"maptools_super_apple_top.png","maptools_super_apple_bottom.png","maptools_super_apple_side.png"}, tiles = {"maptools_super_apple_top.png","maptools_super_apple_bottom.png","maptools_super_apple_side.png"},
inventory_image = "maptools_superapple.png", inventory_image = "maptools_superapple.png",
@ -477,10 +345,8 @@ minetest.register_node("maptools:superapple", {
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
minetest.register_node("maptools:drowning", { register_node("maptools:drowning", {
description = S("Drownable Air"), description = S("Drownable Air"),
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_black.png", inventory_image = "default_steel_block.png^dye_black.png",
drawtype = "airlike", drawtype = "airlike",
paramtype = "light", paramtype = "light",
@ -488,7 +354,4 @@ minetest.register_node("maptools:drowning", {
walkable = false, walkable = false,
drowning = 1, drowning = 1,
sunlight_propagates = true, sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
on_drop = maptools.drop_msg
}) })