expose hp_max and breath_max from api due older engines, update info

* update README and API information about this fork
This commit is contained in:
mckaygerhard 2023-07-23 17:40:27 -04:00
parent 0edeb5599e
commit c435ee31b3
4 changed files with 21 additions and 14 deletions

7
API.md
View File

@ -8,6 +8,8 @@ This API allows you to add, change, hide and unhide custom HUD bars for this mod
To give you a *very* brief overview over this API, here is the basic workflow on how to add your own custom HUD bar: To give you a *very* brief overview over this API, here is the basic workflow on how to add your own custom HUD bar:
* Create images for your HUD bar * Create images for your HUD bar
* Optionally, set `hb.hp_max` to customize maximun healt of player, implementing lua minetest api
* Optional, set `hb.breath_max` to customize maximun players breath, implementing lua minetest api
* Call `hb.register_hudbar` to make the definition of the HUD bar known to this mod * Call `hb.register_hudbar` to make the definition of the HUD bar known to this mod
* Call `hb.init_hudbar` for each player for which you want to use previously defined HUD bar * Call `hb.init_hudbar` for each player for which you want to use previously defined HUD bar
* Use `hb.change_hudbar` whenever you need to change the values of a HUD bar of a certain player * Use `hb.change_hudbar` whenever you need to change the values of a HUD bar of a certain player
@ -92,8 +94,11 @@ explicitly initialized on a per-player basis.
You probably want to do this in the `minetest.register_on_joinplayer`. You probably want to do this in the `minetest.register_on_joinplayer`.
Take into consideration there's a rare bug on minetest engine that into this callback,
sometimes that call its lazy and do not executed well. In such case just recall again only one time.
### `hb.init_hudbar(player, identifier, start_value, start_max, start_hidden)` ### `hb.init_hudbar(player, identifier, start_value, start_max, start_hidden)`
This function initialzes and activates a previously registered HUD bar and assigns it to a This function initializes and activates a previously registered HUD bar and assigns it to a
certain client/player. This has only to be done once per player and after that, you can change certain client/player. This has only to be done once per player and after that, you can change
the values using `hb.change_hudbar`. the values using `hb.change_hudbar`.

View File

@ -13,7 +13,7 @@ this mod will place them accordingly.
![](screenshot.png) ![](screenshot.png)
## TEchnical info ## Technical info
----------------- -----------------
> **Warning** Keep in mind if running a server with this mod, > **Warning** Keep in mind if running a server with this mod,
@ -21,14 +21,16 @@ that the custom position should be displayed correctly on every screen size.
#### Dependencies #### Dependencies
There's no depends There's no depends, older engines just need intlib but its optional
#### Current version #### Current version
The current version is 2.3.4.0 its a plus fork from original cos current The current version is 2.3.4.1 its a plus fork from original cos current
minetest most close mods developers are not so open to support already working servers. minetest most close mods developers are not so open to support already working servers.
It works for Minetest 0.4.17+ (maybe 0.4.16 too) or later. This fork feaured real honoring to max healt and max breath and customization of, also:
It works for Minetest 0.4.17+ (maybe 0.4.16 too) or later, including lastest crap from 5.7+.
#### Settings #### Settings
@ -37,6 +39,8 @@ Use the advanced settings menu in Minetest for detailed configuration.
| configuration name | Description | type | values, min/default/max | | configuration name | Description | type | values, min/default/max |
| ---------------------------- | ------------------------------------- | ---- | ------------------------ | | ---------------------------- | ------------------------------------- | ---- | ------------------------ |
| hudbars_hp_player_maximun | set the maximun hp of the player healt | int | 10 20 60 |
| hudbars_br_player_maximun | set the maximun player breath value | int | 10 10 30 |
| hudbars_bar_type | HUD bars style | enum | progress_bar progress_bar,statbar_classic,statbar_modern | | hudbars_bar_type | HUD bars style | enum | progress_bar progress_bar,statbar_classic,statbar_modern |
| hudbars_autohide_breath | Automatically hide breath indicators | bool | true | | hudbars_autohide_breath | Automatically hide breath indicators | bool | true |
| hudbars_alignment_pattern | HUD bars alignment pattern | enum | zigzag zigzag,stack_up,stack_down | | hudbars_alignment_pattern | HUD bars alignment pattern | enum | zigzag zigzag,stack_up,stack_down |

View File

@ -50,8 +50,7 @@ end
hb.settings.hp_player_maximun = hb.load_setting("hudbars_hp_player_maximun", "number", 20) hb.settings.hp_player_maximun = hb.load_setting("hudbars_hp_player_maximun", "number", 20)
hb.settings.br_player_maximun = hb.load_setting("hudbars_br_player_maximun", "number", 10) hb.settings.br_player_maximun = hb.load_setting("hudbars_br_player_maximun", "number", 10)
if minetest.has_feature("object_use_texture_alpha") then -- expose direct api
core.PLAYER_MAX_HP_DEFAULT = hb.settings.hp_player_maximun hb.hp_max = hb.settings.hp_player_maximun
else hb.breath_max = hb.settings.br_player_maximun
core.PLAYER_MAX_HP = hb.settings.hp_player_maximun
end

View File

@ -76,7 +76,7 @@ end
local function checksupportmax(player) local function checksupportmax(player)
local statusinfo = minetest.get_server_status() local statusinfo = minetest.get_server_status()
if string.find(statusinfo,"0.4.1") and not string.find(statusinfo,"0.4.18") and not string.find(statusinfo,"0.4.17.5") then if string.find(statusinfo,"0.4.1") and not string.find(statusinfo,"0.4.19") and not string.find(statusinfo,"0.4.18") and not string.find(statusinfo,"0.4.17.4") then
hb.settings.hp_player_maximun = 20 hb.settings.hp_player_maximun = 20
hb.settings.br_player_maximun = 10 hb.settings.br_player_maximun = 10
if player_exists(player) then if player_exists(player) then
@ -312,8 +312,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
state.text = text state.text = text
state.barlength = hb.value_to_barlength(start_value, start_max) state.barlength = hb.value_to_barlength(start_value, start_max)
local main_error_text = local main_error_text = "[hudbars] Bad initial values of HUD bar identifier “"..tostring(identifier).."” for player "..name..". "
"[hudbars] Bad initial values of HUD bar identifier “"..tostring(identifier).."” for player "..name..". "
if start_max < start_value then if start_max < start_value then
minetest.log("error", main_error_text.."start_max ("..start_max..") is smaller than start_value ("..start_value..")!") minetest.log("error", main_error_text.."start_max ("..start_max..") is smaller than start_value ("..start_value..")!")
@ -546,7 +545,7 @@ local function custom_hud(player)
local breath = player:get_breath() local breath = player:get_breath()
local breath_max = hb.settings.br_player_maximun local breath_max = hb.settings.br_player_maximun
local hide_breath local hide_breath
-- real honoring to configuration of max hp custom heal and breath -- real honoring to configuration of max hp custom heal and breath from others mod
if player:get_properties().hp_max then player:set_properties({hp_max = hb.settings.hp_player_maximun}) end if player:get_properties().hp_max then player:set_properties({hp_max = hb.settings.hp_player_maximun}) end
if player:get_properties().breath_max then player:set_properties({breath_max = hb.settings.br_player_maximun}) end if player:get_properties().breath_max then player:set_properties({breath_max = hb.settings.br_player_maximun}) end
-- workaround bug https://github.com/minetest/minetest/issues/12350 -- workaround bug https://github.com/minetest/minetest/issues/12350