+ if def.pathfinds then
+ mob_register.pathfinding = function(self,dtime)
+ if self.following and self.following_pos then
+ self.pathfinding_timer = self.pathfinding_timer + dtime
+ if self.pathfinding_timer > 1 or not self.path_data then
+ self.pathfinding_timer = 0
+
+ local path = minetest.find_path(self.object:get_pos(),self.following_pos,self.view_distance*2,1,1,"A*")
+ if path then--or (self.path_data and table.getn(self.path_data) < 3)) then
+ self.path_data = path
+ end
+ if self.path_data and table.getn(self.path_data) <= 4 then
+ self.path_data = nil
+ end
+
+ if self.path_data then
+ for index,pos_data in pairs(self.path_data) do
+ --print(dump(pos_data))
+ minetest.add_particle({
+ pos = pos_data,
+ velocity = {x=0, y=0, z=0},
+ acceleration = {x=0, y=0, z=0},
+ expirationtime = 1,
+ size = 1,
+ texture = "dirt.png",
+ })
+ end
+ end
+ end
+ end
+ local selfpos = self.object:get_pos()
+ local pos1 = vector.new(selfpos.x,0,selfpos.z)
+ if self.path_data and table.getn(self.path_data) > 0 and vector.distance(pos1,vector.new(self.path_data[1].x,0,self.path_data[1].z)) < 1 then
+ --shift whole list down
+ for i = 2,table.getn(self.path_data) do
+ self.path_data[i-1] = self.path_data[i]
+ end
+ self.path_data[table.getn(self.path_data)] = nil
+ end
+ end
+ end