From 09854a9af4a5ce70d0098b340a3585c136f99db7 Mon Sep 17 00:00:00 2001 From: Gustavo Ramos Rehermann Date: Thu, 17 Feb 2022 17:08:58 -0300 Subject: [PATCH 1/2] Change effect of gravity on submerged items --- mods/ENTITIES/mcl_item_entity/init.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 91e152ca1..55c81f155 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -791,6 +791,9 @@ minetest.register_entity(":__builtin:item", { local oldvel = self.object:get_velocity() -- v is vector, vel is velocity + -- apply gravity *before* drag computations + oldvel.y = oldvel.y - get_gravity() * dtime + -- drag local fluid_drag = item_drop_settings.fluid_drag @@ -804,12 +807,6 @@ minetest.register_entity(":__builtin:item", { newv.x = newv.x - (oldvel.x - newv.x) * fluid_drag * dtime newv.y = newv.y - (oldvel.y - newv.y) * fluid_drag * dtime newv.z = newv.z - (oldvel.z - newv.z) * fluid_drag * dtime - - newv.y = newv.y + -0.22 -- (keep slight downward thrust from previous version of code) - -- NOTE: is there any particular reason we have this, anyway? - -- since fluid drag is now on, we could as well just - -- apply gravity here; drag will slow down the fall - -- realistically self.object:set_velocity({x = oldvel.x + newv.x * dtime, y = oldvel.y + newv.y * dtime, z = oldvel.z + newv.z * dtime}) From 0af898fc6e557ec9acb70a3f89099648273d8f2a Mon Sep 17 00:00:00 2001 From: Gustavo Ramos Rehermann Date: Thu, 17 Feb 2022 21:15:46 -0300 Subject: [PATCH 2/2] Ensure flowing items don't affect collection animation --- mods/ENTITIES/mcl_item_entity/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 55c81f155..56de6337a 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -153,6 +153,10 @@ minetest.register_globalstep(function(dtime) object:set_velocity({x=0,y=0,z=0}) object:set_acceleration({x=0,y=0,z=0}) + if object._flowing then + object._flowing = false + end + object:move_to(checkpos) pool[name] = pool[name] + 1