+-- Check each player and apply animations
+minetest.register_globalstep(function(dtime)
+ for _, player in pairs(minetest.get_connected_players()) do
+ local name = player:get_player_name()
+ local model_name = player_model[name]
+ local model = model_name and models[model_name]
+ if model and not player_attached[name] then
+ local controls = player:get_player_control()
+ local walking = false
+ local animation_speed_mod = model.animation_speed or 30
+
+ -- Determine if the player is walking
+ if controls.up or controls.down or controls.left or controls.right then
+ walking = true
+ end
+
+ -- Determine if the player is sneaking, and reduce animation speed if so
+ if controls.sneak then
+ animation_speed_mod = animation_speed_mod / 2
+ end
+
+ -- Apply animations based on what the player is doing
+ if player:get_hp() == 0 then
+ player_set_animation(player, "lay")
+ elseif walking then
+ if player_sneak[name] ~= controls.sneak then
+ player_anim[name] = nil
+ player_sneak[name] = controls.sneak
+ end
+ if controls.LMB then
+ player_set_animation(player, "walk_mine", animation_speed_mod)
+ else
+ player_set_animation(player, "walk", animation_speed_mod)
+ end
+ elseif controls.LMB then
+ player_set_animation(player, "mine")
+ else
+ player_set_animation(player, "stand", animation_speed_mod)
+ end
+ end
+ end
+end)