From 8519730ee4e818bc5aff79594af38421d455a1d9 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Mon, 15 Mar 2021 10:04:47 +0800 Subject: [PATCH] Further tweak fire particles. Highlights: - Reduce amount of smoke significantly - Reduced smoke size - Rarer chance of smoke rising up to 8 blocks - Better smoke colors --- mods/ITEMS/mcl_fire/init.lua | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 68e16bb2..1be1da63 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -29,23 +29,24 @@ local alldirs= } -- 3 exptime variants because the animation is not tied to particle expiration time. +-- 3 colorized variants to imitate minecraft's local smoke_pdef_base = { - amount = 0.5, + amount = 0.001, time = 0, -- minpos = vector.add(pos, { x = -0.45, y = -0.45, z = -0.45 }), -- maxpos = vector.add(pos, { x = 0.45, y = 0.45, z = 0.45 }), - minvel = { x = 0, y = 0.1, z = 0 }, - maxvel = { x = 0, y = 1.4, z = 0 }, - -- minexptime = ???, - -- maxexptime = ???, + minvel = { x = -0.1, y = 0.3, z = -0.1 }, + maxvel = { x = 0.1, y = 1.6, z = 0.1 }, + -- minexptime = 3 exptime variants, + -- maxexptime = 3 exptime variants minsize = 4.0, - maxsize = 5.0, - -- texture = "mcl_particles_smoke_anim.png^[colorize:#000000:???", + maxsize = 4.5, + -- texture = "mcl_particles_smoke_anim.png^[colorize:#000000:(3 colourize variants)", animation = { type = "vertical_frames", aspect_w = 8, aspect_h = 8, - -- length = ???, + -- length = 3 exptime variants }, collisiondetection = true, } @@ -59,8 +60,8 @@ local spawn_smoke = function(pos) if not next(smoke_pdef_cached) then -- the last frame plays for 1/8 * N seconds, so we can take advantage of it -- to have varying exptime for each variant. - local exptimes = { 1.0, 3.0, 5.0 } - local colorizes = { "178", "204", "243" } + local exptimes = { 0.75, 1.5, 4.0 } + local colorizes = { "199", "209", "243" } -- round(78%, 82%, 90% of 256) - 1 local id = 1 for _,exptime in ipairs(exptimes) do @@ -69,6 +70,8 @@ local spawn_smoke = function(pos) smoke_pdef_base.maxpos = new_maxpos smoke_pdef_base.maxexptime = exptime smoke_pdef_base.animation.length = exptime + 0.1 + -- minexptime must be set such that the last frame is actully rendered, + -- even if its very short. Larger exptime -> larger range smoke_pdef_base.minexptime = min(exptime, (7.0/8.0 * (exptime + 0.1) + 0.1)) smoke_pdef_base.texture = "mcl_particles_smoke_anim.png^[colorize:#000000:" ..colorize @@ -80,7 +83,6 @@ local spawn_smoke = function(pos) end end - -- cache already populated else for i, smoke_pdef in ipairs(smoke_pdef_cached) do