]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/mob/api/animation.lua
Fix mob count handling
[Crafter.git] / mods / mob / api / animation.lua
index 7503fe71a89d4239223299d0338d48668d6d427e..6f3929333db7abdbab4c42804d2ab59e2c7634b1 100644 (file)
@@ -1,48 +1,50 @@
 -- 
 mobs.create_animation_functions = function(def,mob_register)
-    mob_register.set_animation = function(self)
-        if self.speed == 0 or vector.equals(self.direction,vector.new(0,0,0)) then
-            self.current_animation = 0
-            self.object:set_animation(def.standing_frame, 1, 0, true)
-        else
-            if self.current_animation ~= 1 then
-                self.object:set_animation(def.moving_frame, 1, 0, true)
-                self.current_animation = 1
-            end
-            
-            local speed = self.object:get_velocity()
-            speed.y = 0
-            self.object:set_animation_frame_speed(vector.distance(vector.new(0,0,0),speed)*def.animation_multiplier)
-        end
-    end
+       if def.movement_type ~= "jump" then
+               mob_register.set_animation = function(self)
+                       if self.speed == 0 or vector.equals(self.direction,vector.new(0,0,0)) then
+                               self.current_animation = 0
+                               self.object:set_animation(def.standing_frame, 1, 0, true)
+                       else
+                               if self.current_animation ~= 1 then
+                                       self.object:set_animation(def.moving_frame, 1, 0, true)
+                                       self.current_animation = 1
+                               end
+                               
+                               local speed = self.object:get_velocity()
+                               speed.y = 0
+                               self.object:set_animation_frame_speed(vector.distance(vector.new(0,0,0),speed)*def.animation_multiplier)
+                       end
+               end
+       end
 
-    --this makes the mob rotate and then die
-    mob_register.manage_death_animation = function(self,dtime)
-        if self.death_animation_timer >= 0 and self.dead == true then
-            self.death_animation_timer = self.death_animation_timer - dtime
-            
-            local self_rotation = self.object:get_rotation()
-            
-            if self.death_rotation == "x" then
-                if self_rotation.x < math.pi/2 then
-                    self_rotation.x = self_rotation.x + (dtime*2)
-                    self.object:set_rotation(self_rotation)
-                end
-            elseif self.death_rotation == "z" then
-                if self_rotation.z < math.pi/2 then
-                    self_rotation.z = self_rotation.z + (dtime*2)
-                    self.object:set_rotation(self_rotation)
-                end
-            end
-            
-            --print(self.death_animation_timer)
-            local currentvel = self.object:getvelocity()
-            local goal = vector.new(0,0,0)
-            local acceleration = vector.new(goal.x-currentvel.x,0,goal.z-currentvel.z)
-            acceleration = vector.multiply(acceleration, 0.05)
-            self.object:add_velocity(acceleration)
-            self.object:set_animation({x=0,y=0}, 15, 0, true)
-        end
-    end
-    return(mob_register)
+       --this makes the mob rotate and then die
+       mob_register.manage_death_animation = function(self,dtime)
+               if self.death_animation_timer >= 0 and self.dead == true then
+                       self.death_animation_timer = self.death_animation_timer - dtime
+                       
+                       local self_rotation = self.object:get_rotation()
+                       
+                       if self.death_rotation == "x" then
+                               if self_rotation.x < math.pi/2 then
+                                       self_rotation.x = self_rotation.x + (dtime*2)
+                                       self.object:set_rotation(self_rotation)
+                               end
+                       elseif self.death_rotation == "z" then
+                               if self_rotation.z < math.pi/2 then
+                                       self_rotation.z = self_rotation.z + (dtime*2)
+                                       self.object:set_rotation(self_rotation)
+                               end
+                       end
+                       
+                       --print(self.death_animation_timer)
+                       local currentvel = self.object:get_velocity()
+                       local goal = vector.new(0,0,0)
+                       local acceleration = vector.new(goal.x-currentvel.x,0,goal.z-currentvel.z)
+                       acceleration = vector.multiply(acceleration, 0.05)
+                       self.object:add_velocity(acceleration)
+                       self.object:set_animation(def.standing_frame, 15, 0, true)
+               end
+       end
+       return(mob_register)
 end