Reduce network activity for elytra flying rocket particles

This commit is contained in:
ancientmarinerdev 2023-05-08 21:51:13 +01:00
parent c62694f9e4
commit d920441a01
2 changed files with 26 additions and 12 deletions

@ -34,8 +34,10 @@ function mcl_util.mcl_log(message, module, bypass_default_logger)
end end
end end
local player_timers = {}
-- This is a dtime timer than can be used in on_step functions so it works every x seconds -- This is a dtime timer than can be used in on_step functions so it works every x seconds
-- self - Object you want to store timer data on. E.g. mob or a minecart -- self - Object you want to store timer data on. E.g. mob or a minecart, or player_name
-- dtime - The time since last run of on_step, should be passed in to function -- dtime - The time since last run of on_step, should be passed in to function
-- timer_name - This is the name of the timer and also the key to store the data. No spaces + lowercase. -- timer_name - This is the name of the timer and also the key to store the data. No spaces + lowercase.
-- threshold - The time before it returns successful. 0.2 if you want to run it 5 times a second. -- threshold - The time before it returns successful. 0.2 if you want to run it 5 times a second.
@ -43,6 +45,14 @@ function mcl_util.check_dtime_timer(self, dtime, timer_name, threshold)
if not self or not threshold or not dtime then return end if not self or not threshold or not dtime then return end
if not timer_name or timer_name == "" then return end if not timer_name or timer_name == "" then return end
if type(self) == "string" then
local player_name = self
if not player_timers[player_name] then
player_timers[player_name] = {}
end
self = player_timers[player_name]
end
if not self._timers then if not self._timers then
self._timers = {} self._timers = {}
end end

@ -272,17 +272,21 @@ minetest.register_globalstep(function(dtime)
if vector.length(player_velocity) < 40 then if vector.length(player_velocity) < 40 then
-- player:add_velocity(vector.multiply(player:get_look_dir(), 4)) -- player:add_velocity(vector.multiply(player:get_look_dir(), 4))
speed_mult = elytra_vars.rocket_speed speed_mult = elytra_vars.rocket_speed
add_particle({
pos = fly_pos, if mcl_util.check_dtime_timer(name, dtime, "ely_rocket_particle_spawn", 0.3) then
velocity = {x = 0, y = 0, z = 0}, minetest.log("pspawn")
acceleration = {x = 0, y = 0, z = 0}, add_particle({
expirationtime = math.random(0.3, 0.5), pos = fly_pos,
size = math.random(1, 2), velocity = vector.zero(),
collisiondetection = false, acceleration = vector.zero(),
vertical = false, expirationtime = math.random(0.3, 0.5),
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127", size = math.random(1, 2),
glow = 5, collisiondetection = false,
}) vertical = false,
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127",
glow = 5,
})
end
end end
end end