]> git.lizzy.rs Git - Crafter.git/commitdiff
Make items flow properly in water
authoroilboi <47129783+oilboi@users.noreply.github.com>
Wed, 24 Jun 2020 00:40:17 +0000 (20:40 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Wed, 24 Jun 2020 00:40:17 +0000 (20:40 -0400)
mods/boat/init.lua
mods/itemhandling/init.lua

index ff3376ccdba17678214d3cefb67593c93a96ca91..4d50b5227cd7119dbd4028f0457d005cd781f54a 100644 (file)
@@ -232,7 +232,7 @@ minetest.register_entity("boat:boat", {
        end,
 
        flow = function(self)
-               local flow_dir = flow(self,self.object:get_pos())
+               local flow_dir = flow(self.object:get_pos())
                if flow_dir then
                        flow_dir = vector.multiply(flow_dir,10)
                        local vel = self.object:get_velocity()
index 807c0e56b76d2f5a94e470198863de325381dd22..3ddf3911ee0648d47b245de60e93fc077a9468ee 100644 (file)
@@ -261,6 +261,7 @@ local slip_factor
 local change
 local slippery
 local i_node
+local flow_dir
 local item_step = function(self, dtime, moveresult)
        pos = self.object:get_pos()
        if not pos then
@@ -418,7 +419,17 @@ local item_step = function(self, dtime, moveresult)
                end
        end
 
-       flow(self,pos)
+
+       flow_dir = flow(pos)
+       
+       if flow_dir then
+               flow_dir = vector.multiply(flow_dir,10)
+               local vel = self.object:get_velocity()
+               local acceleration = vector.new(flow_dir.x-vel.x,flow_dir.y-vel.y,flow_dir.z-vel.z)
+               acceleration = vector.multiply(acceleration, 0.01)
+               self.object:add_velocity(acceleration)
+               return
+       end
 
        change = false
        -- Slide on slippery nodes