Separate player code into new mod
| @@ -54,12 +54,6 @@ Calinou (CC BY-SA 3.0): | ||||
|   default_mineral_copper.png | ||||
|   default_glass_detail.png | ||||
|  | ||||
| MirceaKitsune (CC BY-SA 3.0): | ||||
|   character.x | ||||
|  | ||||
| Jordach (CC BY-SA 3.0): | ||||
|   character.png | ||||
|  | ||||
| PilzAdam (CC BY-SA 3.0): | ||||
|   default_jungleleaves.png | ||||
|   default_junglesapling.png | ||||
| @@ -297,4 +291,3 @@ Chests sounds added by sofar, derived of several files mixed together: | ||||
|     - http://www.freesound.org/people/kingsamas/sounds/135576/ CC-BY-3.0 | ||||
|     - http://www.freesound.org/people/bulbastre/sounds/126887/ CC-BY-3.0 | ||||
|     - http://www.freesound.org/people/Yoyodaman234/sounds/183541/ CC0 | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								mods/default/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| player_api? | ||||
| @@ -47,6 +47,5 @@ dofile(default_path.."/item_entity.lua") | ||||
| dofile(default_path.."/craftitems.lua") | ||||
| dofile(default_path.."/crafting.lua") | ||||
| dofile(default_path.."/mapgen.lua") | ||||
| dofile(default_path.."/player.lua") | ||||
| dofile(default_path.."/aliases.lua") | ||||
| dofile(default_path.."/legacy.lua") | ||||
|   | ||||
| @@ -23,3 +23,14 @@ LIGHT_MAX = default.LIGHT_MAX | ||||
|  | ||||
| -- Formspecs | ||||
| default.gui_suvival_form = default.gui_survival_form | ||||
|  | ||||
| -- Players | ||||
| if minetest.get_modpath("player_api") then | ||||
| 	default.registered_player_models = player_api.registered_models | ||||
| 	default.player_register_model    = player_api.register_model | ||||
| 	default.player_attached          = player_api.player_attached | ||||
| 	default.player_get_animation     = player_api.get_animation | ||||
| 	default.player_set_model         = player_api.set_model | ||||
| 	default.player_set_textures      = player_api.set_textures | ||||
| 	default.player_set_animation     = player_api.set_animation | ||||
| end | ||||
|   | ||||
							
								
								
									
										20
									
								
								mods/player_api/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| Minetest Game mod: player_api | ||||
| ============================ | ||||
| See license.txt for license information. | ||||
|  | ||||
| Provides an API to allow multiple mods to set player models and textures. | ||||
| Also sets the default model, texture, and player flags. | ||||
|  | ||||
| Authors of source code | ||||
| ---------------------- | ||||
| Originally by celeron55, Perttu Ahola <celeron55@gmail.com> (LGPL 2.1) | ||||
| Various Minetest developers and contributors (LGPL 2.1) | ||||
|  | ||||
| Authors of media (textures, models and sounds) | ||||
| ---------------------------------------------- | ||||
|  | ||||
| MirceaKitsune (CC BY-SA 3.0): | ||||
|   character.x | ||||
|  | ||||
| Jordach (CC BY-SA 3.0): | ||||
|   character.png | ||||
| @@ -1,42 +1,29 @@ | ||||
| -- Minetest 0.4 mod: player | ||||
| -- See README.txt for licensing and other information. | ||||
| 
 | ||||
| player_api = {} | ||||
| 
 | ||||
| -- Player animation blending | ||||
| -- Note: This is currently broken due to a bug in Irrlicht, leave at 0 | ||||
| local animation_blend = 0 | ||||
| 
 | ||||
| default.registered_player_models = { } | ||||
| player_api.registered_models = { } | ||||
| 
 | ||||
| -- Local for speed. | ||||
| local models = default.registered_player_models | ||||
| local models = player_api.registered_models | ||||
| 
 | ||||
| function default.player_register_model(name, def) | ||||
| function player_api.register_model(name, def) | ||||
| 	models[name] = def | ||||
| end | ||||
| 
 | ||||
| -- Default player appearance | ||||
| default.player_register_model("character.b3d", { | ||||
| 	animation_speed = 30, | ||||
| 	textures = {"character.png", }, | ||||
| 	animations = { | ||||
| 		-- Standard animations. | ||||
| 		stand     = { x=  0, y= 79, }, | ||||
| 		lay       = { x=162, y=166, }, | ||||
| 		walk      = { x=168, y=187, }, | ||||
| 		mine      = { x=189, y=198, }, | ||||
| 		walk_mine = { x=200, y=219, }, | ||||
| 		sit       = { x= 81, y=160, }, | ||||
| 	}, | ||||
| }) | ||||
| 
 | ||||
| -- Player stats and animations | ||||
| local player_model = {} | ||||
| local player_textures = {} | ||||
| local player_anim = {} | ||||
| local player_sneak = {} | ||||
| default.player_attached = {} | ||||
| player_api.player_attached = {} | ||||
| 
 | ||||
| function default.player_get_animation(player) | ||||
| function player_api.get_animation(player) | ||||
| 	local name = player:get_player_name() | ||||
| 	return { | ||||
| 		model = player_model[name], | ||||
| @@ -46,7 +33,7 @@ function default.player_get_animation(player) | ||||
| end | ||||
| 
 | ||||
| -- Called when a player's appearance needs to be updated | ||||
| function default.player_set_model(player, model_name) | ||||
| function player_api.set_model(player, model_name) | ||||
| 	local name = player:get_player_name() | ||||
| 	local model = models[model_name] | ||||
| 	if model then | ||||
| @@ -59,7 +46,7 @@ function default.player_set_model(player, model_name) | ||||
| 			visual = "mesh", | ||||
| 			visual_size = model.visual_size or {x=1, y=1}, | ||||
| 		}) | ||||
| 		default.player_set_animation(player, "stand") | ||||
| 		player_api.set_animation(player, "stand") | ||||
| 	else | ||||
| 		player:set_properties({ | ||||
| 			textures = { "player.png", "player_back.png", }, | ||||
| @@ -69,13 +56,13 @@ function default.player_set_model(player, model_name) | ||||
| 	player_model[name] = model_name | ||||
| end | ||||
| 
 | ||||
| function default.player_set_textures(player, textures) | ||||
| function player_api.set_textures(player, textures) | ||||
| 	local name = player:get_player_name() | ||||
| 	player_textures[name] = textures | ||||
| 	player:set_properties({textures = textures,}) | ||||
| end | ||||
| 
 | ||||
| function default.player_set_animation(player, anim_name, speed) | ||||
| function player_api.set_animation(player, anim_name, speed) | ||||
| 	local name = player:get_player_name() | ||||
| 	if player_anim[name] == anim_name then | ||||
| 		return | ||||
| @@ -89,16 +76,6 @@ function default.player_set_animation(player, anim_name, speed) | ||||
| 	player:set_animation(anim, speed or model.animation_speed, animation_blend) | ||||
| end | ||||
| 
 | ||||
| -- Update appearance when the player joins | ||||
| 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) | ||||
| 
 | ||||
| 	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 | ||||
| @@ -107,8 +84,8 @@ minetest.register_on_leaveplayer(function(player) | ||||
| end) | ||||
| 
 | ||||
| -- Localize for better performance. | ||||
| local player_set_animation = default.player_set_animation | ||||
| local player_attached = default.player_attached | ||||
| local player_set_animation = player_api.set_animation | ||||
| local player_attached = player_api.player_attached | ||||
| 
 | ||||
| -- Check each player and apply animations | ||||
| minetest.register_globalstep(function(dtime) | ||||
							
								
								
									
										26
									
								
								mods/player_api/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | ||||
| dofile(minetest.get_modpath("player_api") .. "/api.lua") | ||||
|  | ||||
| -- Default player appearance | ||||
| player_api.register_model("character.b3d", { | ||||
| 	animation_speed = 30, | ||||
| 	textures = {"character.png", }, | ||||
| 	animations = { | ||||
| 		-- Standard animations. | ||||
| 		stand     = { x=  0, y= 79, }, | ||||
| 		lay       = { x=162, y=166, }, | ||||
| 		walk      = { x=168, y=187, }, | ||||
| 		mine      = { x=189, y=198, }, | ||||
| 		walk_mine = { x=200, y=219, }, | ||||
| 		sit       = { x= 81, y=160, }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| -- Update appearance when the player joins | ||||
| minetest.register_on_joinplayer(function(player) | ||||
| 	player_api.player_attached[player:get_player_name()] = false | ||||
| 	player_api.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) | ||||
|  | ||||
| 	player:hud_set_hotbar_image("gui_hotbar.png") | ||||
| 	player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") | ||||
| end) | ||||
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 284 B | 
| Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 142 B | 
| Before Width: | Height: | Size: 140 B After Width: | Height: | Size: 140 B |