Default/furnace: Indicate dst full
[oweals/minetest_game.git] / mods / default / player.lua
index f02e0f466318d156fc4655b5b7dd654272ba00e1..e4fb2adf25d907345e9ba1212d19149dc5479ba8 100644 (file)
@@ -1,55 +1,6 @@
 -- Minetest 0.4 mod: player
 -- See README.txt for licensing and other information.
 
---[[
-
-API
----
-
-default.player_register_model(name, def)
-^ Register a new model to be used by players.
-^ <name> is the model filename such as "character.x", "foo.b3d", etc.
-^ See Model Definition below for format of <def>.
-
-default.registered_player_models[name]
-^ See Model Definition below for format.
-
-default.player_set_model(player, model_name)
-^ <player> is a PlayerRef.
-^ <model_name> is a model registered with player_register_model.
-
-default.player_set_animation(player, anim_name [, speed])
-^ <player> is a PlayerRef.
-^ <anim_name> is the name of the animation.
-^ <speed> is in frames per second. If nil, default from the model is used
-
-default.player_set_textures(player, textures)
-^ <player> is a PlayerRef.
-^ <textures> is an array of textures
-^ If <textures> is nil, the default textures from the model def are used
-
-default.player_get_animation(player)
-^ <player> is a PlayerRef.
-^ Returns a table containing fields "model", "textures" and "animation".
-^ Any of the fields of the returned table may be nil.
-
-Model Definition
-----------------
-
-model_def = {
-       animation_speed = 30, -- Default animation speed, in FPS.
-       textures = {"character.png", }, -- Default array of textures.
-       visual_size = {x=1, y=1,}, -- Used to scale the model.
-       animations = {
-               -- <anim_name> = { x=<start_frame>, y=<end_frame>, },
-               foo = { x= 0, y=19, },
-               bar = { x=20, y=39, },
-               -- ...
-       },
-}
-
-]]
-
 -- Player animation blending
 -- Note: This is currently broken due to a bug in Irrlicht, leave at 0
 local animation_blend = 0
@@ -64,7 +15,7 @@ function default.player_register_model(name, def)
 end
 
 -- Default player appearance
-default.player_register_model("character.x", {
+default.player_register_model("character.b3d", {
        animation_speed = 30,
        textures = {"character.png", },
        animations = {
@@ -84,6 +35,7 @@ local player_model = {}
 local player_textures = {}
 local player_anim = {}
 local player_sneak = {}
+default.player_attached = {}
 
 function default.player_get_animation(player)
        local name = player:get_player_name()
@@ -140,8 +92,16 @@ end
 
 -- Update appearance when the player joins
 minetest.register_on_joinplayer(function(player)
-       default.player_set_model(player, "character.x")
+       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)
@@ -153,6 +113,7 @@ 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)
@@ -160,7 +121,7 @@ minetest.register_globalstep(function(dtime)
                local name = player:get_player_name()
                local model_name = player_model[name]
                local model = model_name and models[model_name]
-               if model then
+               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