This commit is contained in:
proller 2013-11-09 13:01:24 -08:00
commit 04d6449a70
4 changed files with 84 additions and 27 deletions

View file

@ -136,6 +136,7 @@ minetest.register_abm({
interval = 10, interval = 10,
chance = 50, chance = 50,
action = function(pos, node) action = function(pos, node)
if weather and minetest.get_heat(pos) < 5 then return end
local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil
if is_soil == nil or is_soil == 0 then return end if is_soil == nil or is_soil == 0 then return end
print("A sapling grows into a tree at "..minetest.pos_to_string(pos)) print("A sapling grows into a tree at "..minetest.pos_to_string(pos))
@ -155,6 +156,7 @@ minetest.register_abm({
interval = 10, interval = 10,
chance = 50, chance = 50,
action = function(pos, node) action = function(pos, node)
if weather and minetest.get_heat(pos) < 15 then return end
local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil
if is_soil == nil or is_soil == 0 then return end if is_soil == nil or is_soil == 0 then return end
print("A jungle sapling grows into a tree at "..minetest.pos_to_string(pos)) print("A jungle sapling grows into a tree at "..minetest.pos_to_string(pos))

View file

@ -1,10 +1,13 @@
-- mods/default/nodes.lua -- mods/default/nodes.lua
local weather = minetest.setting_getbool("weather")
minetest.register_node("default:stone", { minetest.register_node("default:stone", {
description = "Stone", description = "Stone",
tiles = {"default_stone.png"}, tiles = {"default_stone.png"},
is_ground_content = true, is_ground_content = true,
groups = {cracky=3, stone=1}, groups = {cracky=3, stone=1, melt=3000},
freezemelt = "default:lava_source",
drop = 'default:cobble', drop = 'default:cobble',
legacy_mineral = true, legacy_mineral = true,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -14,7 +17,8 @@ minetest.register_node("default:desert_stone", {
description = "Desert Stone", description = "Desert Stone",
tiles = {"default_desert_stone.png"}, tiles = {"default_desert_stone.png"},
is_ground_content = true, is_ground_content = true,
groups = {cracky=3, stone=1}, groups = {cracky=3, stone=1, melt=3000},
freezemelt = "default:lava_source",
drop = 'default:desert_stone', drop = 'default:desert_stone',
legacy_mineral = true, legacy_mineral = true,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -125,7 +129,8 @@ minetest.register_node("default:dirt", {
description = "Dirt", description = "Dirt",
tiles = {"default_dirt.png"}, tiles = {"default_dirt.png"},
is_ground_content = true, is_ground_content = true,
groups = {crumbly=3,soil=1}, groups = {crumbly=3,soil=1,melt=800},
freezemelt = "default:sand",
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
}) })
@ -137,14 +142,16 @@ minetest.register_abm({
local above = {x=pos.x, y=pos.y+1, z=pos.z} local above = {x=pos.x, y=pos.y+1, z=pos.z}
local name = minetest.get_node(above).name local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name] local nodedef = minetest.registered_nodes[name]
if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") if (name == "ignore" or not nodedef) then return end
and nodedef.liquidtype == "none" if ( not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none")) then return end
and (minetest.get_node_light(above) or 0) >= 13 then if (weather and minetest.get_heat(pos) < -15) or name == "default:snow" or
if name == "default:snow" or name == "default:snowblock" then name == "default:snowblock" or name == "default:ice"
minetest.set_node(pos, {name = "default:dirt_with_snow"}) then
else minetest.set_node(pos, {name = "default:dirt_with_snow"})
minetest.set_node(pos, {name = "default:dirt_with_grass"}) elseif (not weather or minetest.get_heat(pos) > 5) and nodedef and
end (minetest.get_node_light(above) or 0) >= 13
then
minetest.set_node(pos, {name = "default:dirt_with_grass"})
end end
end end
}) })
@ -157,9 +164,30 @@ minetest.register_abm({
local above = {x=pos.x, y=pos.y+1, z=pos.z} local above = {x=pos.x, y=pos.y+1, z=pos.z}
local name = minetest.get_node(above).name local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name] local nodedef = minetest.registered_nodes[name]
if name ~= "ignore" and nodedef if (name == "ignore" or not nodedef) then return end
and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") if ( not ((nodedef.sunlight_propagates or nodedef.paramtype == "light")
and nodedef.liquidtype == "none") then and nodedef.liquidtype == "none")) or (weather
and (minetest.get_heat(pos) < -5 or minetest.get_heat(pos) > 60))
or name == "default:snow" or name == "default:snowblock" or name == "default:ice"
then
minetest.set_node(pos, {name = "default:dirt"})
end
end
})
minetest.register_abm({
nodenames = {"default:dirt_with_snow"},
interval = 2,
chance = 200,
action = function(pos, node)
local above = {x=pos.x, y=pos.y+1, z=pos.z}
local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name]
if (name == "ignore" or not nodedef) then return end
if (not ((nodedef.sunlight_propagates or nodedef.paramtype == "light")
and nodedef.liquidtype == "none") or
(weather and minetest.get_heat(pos) > 3 and name ~= "default:snow" and name ~= "default:snowblock" and name ~= "default:ice"))
then
minetest.set_node(pos, {name = "default:dirt"}) minetest.set_node(pos, {name = "default:dirt"})
end end
end end
@ -376,7 +404,8 @@ minetest.register_node("default:glass", {
inventory_image = minetest.inventorycube("default_glass.png"), inventory_image = minetest.inventorycube("default_glass.png"),
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3}, groups = {cracky=3,oddly_breakable_by_hand=3, melt=1500},
freezemelt = "default:obsidian_glass",
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
}) })
@ -478,7 +507,7 @@ minetest.register_node("default:water_flowing", {
liquid_viscosity = WATER_VISC, liquid_viscosity = WATER_VISC,
freezemelt = "default:snow", freezemelt = "default:snow",
post_effect_color = {a=64, r=100, g=100, b=200}, post_effect_color = {a=64, r=100, g=100, b=200},
groups = {water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1}, groups = {water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freeze=-5},
}) })
minetest.register_node("default:water_source", { minetest.register_node("default:water_source", {
@ -510,7 +539,7 @@ minetest.register_node("default:water_source", {
liquid_viscosity = WATER_VISC, liquid_viscosity = WATER_VISC,
freezemelt = "default:ice", freezemelt = "default:ice",
post_effect_color = {a=64, r=100, g=100, b=200}, post_effect_color = {a=64, r=100, g=100, b=200},
groups = {water=3, liquid=3, puts_out_fire=1, freezes=1}, groups = {water=3, liquid=3, puts_out_fire=1, freeze=-1},
}) })
minetest.register_node("default:lava_flowing", { minetest.register_node("default:lava_flowing", {
@ -546,7 +575,7 @@ minetest.register_node("default:lava_flowing", {
liquid_renewable = false, liquid_renewable = false,
damage_per_second = 4*2, damage_per_second = 4*2,
post_effect_color = {a=192, r=255, g=64, b=0}, post_effect_color = {a=192, r=255, g=64, b=0},
groups = {lava=3, liquid=2, hot=3, igniter=1, not_in_creative_inventory=1}, groups = {lava=3, liquid=2, hot=700, igniter=1, not_in_creative_inventory=1},
}) })
minetest.register_node("default:lava_source", { minetest.register_node("default:lava_source", {
@ -579,7 +608,7 @@ minetest.register_node("default:lava_source", {
liquid_renewable = false, liquid_renewable = false,
damage_per_second = 4*2, damage_per_second = 4*2,
post_effect_color = {a=192, r=255, g=64, b=0}, post_effect_color = {a=192, r=255, g=64, b=0},
groups = {lava=3, liquid=2, hot=3, igniter=1}, groups = {lava=3, liquid=2, hot=1200, igniter=1},
}) })
minetest.register_node("default:torch", { minetest.register_node("default:torch", {
@ -604,7 +633,7 @@ minetest.register_node("default:torch", {
wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1}, wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1}, wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
}, },
groups = {choppy=2,dig_immediate=3,flammable=1,attached_node=1,hot=2}, groups = {choppy=2,dig_immediate=3,flammable=1,attached_node=1,hot=150},
legacy_wallmounted = true, legacy_wallmounted = true,
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
@ -879,7 +908,7 @@ minetest.register_node("default:furnace_active", {
paramtype2 = "facedir", paramtype2 = "facedir",
light_source = 8, light_source = 8,
drop = "default:furnace", drop = "default:furnace",
groups = {cracky=2, not_in_creative_inventory=1,hot=1}, groups = {cracky=2, not_in_creative_inventory=1,hot=60},
legacy_facedir_simple = true, legacy_facedir_simple = true,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = function(pos) on_construct = function(pos)
@ -1052,7 +1081,8 @@ minetest.register_node("default:cobble", {
description = "Cobblestone", description = "Cobblestone",
tiles = {"default_cobble.png"}, tiles = {"default_cobble.png"},
is_ground_content = true, is_ground_content = true,
groups = {cracky=3, stone=2}, freezemelt = "default:lava_source",
groups = {cracky=3, stone=2, melt=2900},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -1136,7 +1166,8 @@ minetest.register_node("default:obsidian", {
tiles = {"default_obsidian.png"}, tiles = {"default_obsidian.png"},
is_ground_content = true, is_ground_content = true,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
groups = {cracky=1,level=2}, groups = {cracky=1,level=2, melt=5000},
freezemelt = "default:lava_source",
}) })
minetest.register_node("default:nyancat", { minetest.register_node("default:nyancat", {
@ -1321,7 +1352,7 @@ minetest.register_node("default:ice", {
is_ground_content = true, is_ground_content = true,
paramtype = "light", paramtype = "light",
freezemelt = "default:water_source", freezemelt = "default:water_source",
groups = {cracky=3, melts=1}, groups = {cracky=3, melt=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
}) })
@ -1342,7 +1373,7 @@ minetest.register_node("default:snow", {
{-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5}, {-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5},
}, },
}, },
groups = {crumbly=3,falling_node=1, melts=1, float=1}, groups = {crumbly=3,falling_node=1, melt=1, float=1},
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
footstep = {name="default_snow_footstep", gain=0.25}, footstep = {name="default_snow_footstep", gain=0.25},
dug = {name="default_snow_footstep", gain=0.75}, dug = {name="default_snow_footstep", gain=0.75},
@ -1361,7 +1392,7 @@ minetest.register_node("default:snowblock", {
tiles = {"default_snow.png"}, tiles = {"default_snow.png"},
is_ground_content = true, is_ground_content = true,
freezemelt = "default:water_source", freezemelt = "default:water_source",
groups = {crumbly=3, melts=1}, groups = {crumbly=3, melt=2},
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
footstep = {name="default_snow_footstep", gain=0.25}, footstep = {name="default_snow_footstep", gain=0.25},
dug = {name="default_snow_footstep", gain=0.75}, dug = {name="default_snow_footstep", gain=0.75},

View file

@ -9,7 +9,7 @@ minetest.register_node("fire:basic_flame", {
}}, }},
inventory_image = "fire_basic_flame.png", inventory_image = "fire_basic_flame.png",
light_source = 14, light_source = 14,
groups = {igniter=2,dig_immediate=3,hot=3}, groups = {igniter=2,dig_immediate=3,hot=200},
drop = '', drop = '',
walkable = false, walkable = false,
buildable_to = true, buildable_to = true,
@ -190,3 +190,23 @@ minetest.register_abm({
end, end,
}) })
-- too hot
if minetest.setting_getbool("weather") then
minetest.register_abm({
nodenames = {"group:flammable"},
interval = 5,
chance = 5,
action = function(p0, node, _, _)
-- If there is water or stuff like that around flame, don't ignite
if minetest.get_heat(p0) < 500 then return end
if fire.flame_should_extinguish(p0) then
return
end
local p = fire.find_pos_for_flame_around(p0)
if p then
minetest.set_node(p, {name="fire:basic_flame"})
fire.on_flame_add_at(p)
end
end,
})
end

View file

@ -139,6 +139,10 @@ minetest.register_abm({
if not light or light < 13 then if not light or light < 13 then
return return
end end
if minetest.setting_getbool("weather") and minetest.get_heat(pos) < 5 then
return
end
local pos0 = {x=pos.x-4,y=pos.y-4,z=pos.z-4} local pos0 = {x=pos.x-4,y=pos.y-4,z=pos.z-4}
local pos1 = {x=pos.x+4,y=pos.y+4,z=pos.z+4} local pos1 = {x=pos.x+4,y=pos.y+4,z=pos.z+4}