-minetest.register_on_joinplayer(player_update_visuals)
-
--- Global environment step function
-function on_step(dtime)
- for _, pl in pairs(minetest.get_connected_players()) do
- local name = pl:get_player_name()
- local anim = player_get_animations(player_model[name])
- local controls = pl:get_player_control()
-
- if controls.up then
- if player_anim[name] ~= ANIM_WALK_FORWARD then
- pl:set_animation({x=anim.walk_forward_START, y=anim.walk_forward_END}, animation_speed, animation_blend)
- player_anim[name] = ANIM_WALK_FORWARD
- end
- elseif controls.down then
- if player_anim[name] ~= ANIM_WALK_BACKWARD then
- pl:set_animation({x=anim.walk_backward_START, y=anim.walk_backward_END}, animation_speed, animation_blend)
- player_anim[name] = ANIM_WALK_BACKWARD
- end
- elseif controls.left then
- if player_anim[name] ~= ANIM_WALK_LEFT then
- pl:set_animation({x=anim.walk_left_START, y=anim.walk_left_END}, animation_speed, animation_blend)
- player_anim[name] = ANIM_WALK_LEFT
+minetest.register_on_joinplayer(function(player)
+ default.player_attached[player:get_player_name()] = false
+ default.player_set_model(player, "character.b3d")
+ player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
+
+ -- set GUI
+ if not minetest.setting_getbool("creative_mode") then
+ player:set_inventory_formspec(default.gui_survival_form)
+ end
+ player:hud_set_hotbar_image("gui_hotbar.png")
+ player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
+end)
+
+minetest.register_on_leaveplayer(function(player)
+ local name = player:get_player_name()
+ player_model[name] = nil
+ player_anim[name] = nil
+ player_textures[name] = nil
+end)
+
+-- Localize for better performance.
+local player_set_animation = default.player_set_animation
+local player_attached = default.player_attached
+
+-- 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