Add lava particles
This commit is contained in:
parent
101391cbcc
commit
c0aeb2f15f
BIN
mods/CORE/mcl_particles/textures/mcl_particles_lava.png
Normal file
BIN
mods/CORE/mcl_particles/textures/mcl_particles_lava.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 183 B |
|
@ -1,5 +1,6 @@
|
||||||
mcl_init
|
mcl_init
|
||||||
mcl_sounds
|
mcl_sounds
|
||||||
|
mcl_particles
|
||||||
mcl_util
|
mcl_util
|
||||||
mcl_worlds
|
mcl_worlds
|
||||||
doc_items
|
doc_items
|
||||||
|
|
|
@ -6,6 +6,7 @@ local N = function(s) return s end
|
||||||
local WATER_ALPHA = 179
|
local WATER_ALPHA = 179
|
||||||
local WATER_VISC = 1
|
local WATER_VISC = 1
|
||||||
local LAVA_VISC = 7
|
local LAVA_VISC = 7
|
||||||
|
local LIGHT_LAVA = minetest.LIGHT_MAX
|
||||||
|
|
||||||
local lava_death_messages = {
|
local lava_death_messages = {
|
||||||
N("@1 melted in lava."),
|
N("@1 melted in lava."),
|
||||||
|
@ -120,7 +121,7 @@ minetest.register_node("mcl_core:lava_flowing", {
|
||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
paramtype2 = "flowingliquid",
|
paramtype2 = "flowingliquid",
|
||||||
light_source = minetest.LIGHT_MAX,
|
light_source = LIGHT_LAVA,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
sounds = mcl_sounds.node_sound_lava_defaults(),
|
sounds = mcl_sounds.node_sound_lava_defaults(),
|
||||||
walkable = false,
|
walkable = false,
|
||||||
|
@ -178,7 +179,7 @@ S("• When lava is directly above water, the water turns into stone."),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
light_source = minetest.LIGHT_MAX,
|
light_source = LIGHT_LAVA,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
sounds = mcl_sounds.node_sound_lava_defaults(),
|
sounds = mcl_sounds.node_sound_lava_defaults(),
|
||||||
walkable = false,
|
walkable = false,
|
||||||
|
@ -197,8 +198,50 @@ S("• When lava is directly above water, the water turns into stone."),
|
||||||
_mcl_node_death_message = lava_death_messages,
|
_mcl_node_death_message = lava_death_messages,
|
||||||
post_effect_color = {a=245, r=208, g=73, b=10},
|
post_effect_color = {a=245, r=208, g=73, b=10},
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1},
|
groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1},
|
||||||
_mcl_blast_resistance = 100,
|
_mcl_blast_resistance = 100,
|
||||||
-- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
|
-- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
|
||||||
_mcl_hardness = -1,
|
_mcl_hardness = -1,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local emit_lava_particle = function(pos)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
if minetest.get_item_group(node.name, "lava_source") == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local ppos = vector.add(pos, { x = math.random(-7, 7)/16, y = 0.45, z = math.random(-7, 7)/16})
|
||||||
|
local spos = vector.add(ppos, { x = 0, y = -0.2, z = 0 })
|
||||||
|
local vel = { x = math.random(-3, 3)/10, y = math.random(4, 7), z = math.random(-3, 3)/10 }
|
||||||
|
local acc = { x = 0, y = -9.81, z = 0 }
|
||||||
|
-- Lava droplet
|
||||||
|
minetest.add_particle({
|
||||||
|
pos = ppos,
|
||||||
|
velocity = vel,
|
||||||
|
acceleration = acc,
|
||||||
|
expirationtime = 2.5,
|
||||||
|
collisiondetection = true,
|
||||||
|
collision_removal = true,
|
||||||
|
size = math.random(20, 30)/10,
|
||||||
|
texture = "mcl_particles_lava.png",
|
||||||
|
glow = LIGHT_LAVA,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.settings:get_bool("mcl_node_particles", true) then
|
||||||
|
minetest.register_abm({
|
||||||
|
label = "Lava particles",
|
||||||
|
nodenames = {"group:lava_source"},
|
||||||
|
interval = 8.0,
|
||||||
|
chance = 20,
|
||||||
|
action = function(pos, node)
|
||||||
|
local apos = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||||
|
local anode = minetest.get_node(apos)
|
||||||
|
-- Only emit partiles when directly below lava
|
||||||
|
if anode.name ~= "air" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.after(math.random(0, 800)*0.01, emit_lava_particle, pos)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user