Separate player code into new mod

Этот коммит содержится в:
rubenwardy
2017-07-26 19:38:11 +01:00
коммит произвёл paramat
родитель 7ffd176f48
Коммит 5d19fd6923
16 изменённых файлов: 122 добавлений и 99 удалений

Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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)

Просмотреть файл

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 2.7 KiB

После

Ширина:  |  Высота:  |  Размер: 2.7 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 284 B

После

Ширина:  |  Высота:  |  Размер: 284 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.6 KiB

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 142 B

После

Ширина:  |  Высота:  |  Размер: 142 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 140 B

После

Ширина:  |  Высота:  |  Размер: 140 B