Fix item flying after moving out of liquid
parent
1a7b455fd2
commit
b153104d24
|
@ -28,8 +28,8 @@ local check_pickup_achievements = function(object, player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local enable_physics = function(object, luaentity)
|
local enable_physics = function(object, luaentity, ignore_check)
|
||||||
if luaentity.physical_state == false then
|
if luaentity.physical_state == false or ignore_check == true then
|
||||||
luaentity.physical_state = true
|
luaentity.physical_state = true
|
||||||
object:set_properties({
|
object:set_properties({
|
||||||
physical = true
|
physical = true
|
||||||
|
@ -39,8 +39,8 @@ local enable_physics = function(object, luaentity)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local disable_physics = function(object, luaentity, reset_movement)
|
local disable_physics = function(object, luaentity, ignore_check, reset_movement)
|
||||||
if luaentity.physical_state == true then
|
if luaentity.physical_state == true or ignore_check == true then
|
||||||
luaentity.physical_state = false
|
luaentity.physical_state = false
|
||||||
object:set_properties({
|
object:set_properties({
|
||||||
physical = false
|
physical = false
|
||||||
|
@ -96,7 +96,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
vec = vector.add(opos, vector.divide(vec, 2))
|
vec = vector.add(opos, vector.divide(vec, 2))
|
||||||
object:moveto(vec)
|
object:moveto(vec)
|
||||||
|
|
||||||
disable_physics(object, object:get_luaentity(), false)
|
disable_physics(object, object:get_luaentity(), false, false)
|
||||||
|
|
||||||
--fix eternally falling items
|
--fix eternally falling items
|
||||||
minetest.after(0, function(object)
|
minetest.after(0, function(object)
|
||||||
|
@ -487,7 +487,7 @@ core.register_entity(":__builtin:item", {
|
||||||
self.object:setacceleration({x = 0, y = 0, z = 0})
|
self.object:setacceleration({x = 0, y = 0, z = 0})
|
||||||
self.object:setvelocity(newv)
|
self.object:setvelocity(newv)
|
||||||
|
|
||||||
disable_physics(self.object, self, false)
|
disable_physics(self.object, self, false, false)
|
||||||
|
|
||||||
if shootdir.y == 0 then
|
if shootdir.y == 0 then
|
||||||
self._force = newv
|
self._force = newv
|
||||||
|
@ -551,7 +551,7 @@ core.register_entity(":__builtin:item", {
|
||||||
elseif self._flowing == true then
|
elseif self._flowing == true then
|
||||||
-- Disable flowing physics if not on/in flowing liquid
|
-- Disable flowing physics if not on/in flowing liquid
|
||||||
self._flowing = false
|
self._flowing = false
|
||||||
enable_physics(self.object, self)
|
enable_physics(self.object, self, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue