slower_in_liquid/init.lua

40 lines
1.0 KiB
Lua

--TODO: maybe some glitches?
minetest.register_on_joinplayer(function(player)
local meta = player:get_meta()
meta:set_float("speed", 1)
end)
minetest.register_globalstep(function(dtime)
for _,player in ipairs(minetest.get_connected_players()) do
local meta = player:get_meta()
local name = player:get_player_name()
if minetest.get_node(player:get_pos()).name == "default:water_source" then
meta:set_int("in_liquid", 1)
else
meta:set_int("in_liquid", 0)
end
--print( meta:get_int("in_liquid") )
local tempmeta = meta:get_int("in_liquid")
if tempmeta==1 then
if math.floor(player:get_physics_override().speed*10)/10 ~= 0.4 then
meta:set_float("speed", player:get_physics_override().speed)
end
player:set_physics_override({
speed = 0.4
})
elseif tempmeta==0 then
if math.floor(player:get_physics_override().speed*10)/10 == 0.4 then
player:set_physics_override({
speed = meta:get_float("speed")
})
end
end
end
end)