Compare commits

...

131 Commits

Author SHA1 Message Date
0edeb5599e backguard compatibility of hp_max in older clients, (missing breath_max)
* honoring customizations of hp_max its not so valid in older
  clients becouse of a bug in older lients of hardcoded healt player
  at f7d50a8078
  long time ago user requested https://github.com/minetest/minetest/issues/2246
  the value was hardcoded into engine and do not allow to be
  customized by mods until the commit above, this patch
  takes that into consideration and set the value to 20.
* NOTE: as side effect if you started a server that support
  hp_max modification and try to connect using a older client,
  client will perfectly supports the already configured healt
  from client, but will start at 20 initialy, of course with
  max_hp supported over the value of 20
2023-07-18 23:07:28 -04:00
c219b708f8 not hardcoded the hb.init_hudbar max values, real fix of get_properties when join players
* real fix for missing format_string_config.textdomain
  fixed https://codeberg.org/Wuzzy/minetest_hudbars/issues/8
* fix the backguard compatibility for format_string_config.format_string
  due commit 29c1a3c31ce870cf6e0dd7782dc276254b7d3846
* add configuration settings for hp_max of player and breath_max
  that really honors the configuration of customization of hp_max
* do not hardcoded hp_max neither breath_max and honor customizations
* real fix for commit 20843d95cec0fb18516bc3c3ee456254a381ad5b
  set alternate honored max values before get_properties when join players
  this finally fixed this is a merge of Wuzzy/minetest_hudbars#5
  and final fix for https://codeberg.org/Wuzzy/minetest_hudbars/issues/4
* increase default ticks of updates for hud bar, to avoid performance
  issues in low end devices
2023-07-17 00:35:34 -04:00
47615b8422 fix backgroun textures optimization for alpha transparency 2023-07-16 22:29:40 -04:00
3e73d3fa50 Merge branch 'nil_check_hudbar_state' of fluxionary for hudbar state checks
* another fix for https://codeberg.org/Wuzzy/minetest_hudbars/issues/4
  based on separate callbacks, when we have several mods that rely on
* this solves and close https://codeberg.org/Wuzzy/minetest_hudbars/issues/4
  but will need https://codeberg.org/Wuzzy/minetest_hudbars/pulls/7 also.
* this must be use in join with commit 20843d95cec0fb18516bc3c3ee456254a381ad5b
  of this repository that is a backport of my own fork at @mckaygerhard
2023-06-21 12:45:36 -04:00
flux
881564d441
get_hudbar_state: return nil if not initialized 2023-06-20 12:42:50 -07:00
facc2cffb8 agressive optimizations for textures
* adapt fork changes from Niklp/minetest_hudbars
* backported ce8239ba09 (diff-748679858024f66ba27ffe19be82b13c951ef82f)
2023-06-20 00:36:21 -04:00
737bc5ae0f update information for engines any version, adde complete good readme 2023-06-20 00:20:30 -04:00
29c1a3c31c backguard compatibility for 0.4.16+ engines and 5.2+ and beyond
* boilerplace the minetest translation and only use format
  when is available to translate it
* uses Use MT native support for "background icons" only
  when available and if valid
2023-06-20 00:02:42 -04:00
20843d95ce workaround in rare cases for get_properties when join players
* sometimes `player:get_properties().something` returns `nil`
  if you called inside `minetest.register_on_joinplayer()`, so
  it triggers an "attempt to index a nil value" error when called
* considering the following reports:
  the second bug is pretty super common, still in 5.5 version of
  engine minetest, of course its mod update issue but still valid
    * https://github.com/minetest/minetest/issues/12350
    * https://github.com/minetest/minetest/issues/13343
    * https://codeberg.org/Wuzzy/minetest_hudbars/issues/4
* this is a merge of https://codeberg.org/Wuzzy/minetest_hudbars/pulls/5
2023-06-19 23:45:12 -04:00
Wuzzy
965a67a9c1 Version 2.3.4 2023-03-09 12:53:17 +01:00
Wuzzy
4876bbbb00 Fix error message when reducing max. player hp 2023-03-09 12:52:18 +01:00
Wuzzy
dd2a9a008d Add mailmap for Wuzzy 2022-08-01 13:57:41 +02:00
Wuzzy
812b2538ff Version 2.3.3 2021-07-08 15:43:14 +02:00
Wuzzy
906f7876f7 Version 2.3.2 2021-07-08 15:42:11 +02:00
Wuzzy
a44de6230b Fix massive hud_change spam (hide/unhide) 2021-07-08 15:34:50 +02:00
Wuzzy
0684bac45b Version 2.3.1 2020-07-11 03:41:09 +02:00
Wuzzy
183d727635 Revert "12×12 textures, compress textures"
This reverts commit 746945dd0f00903614e24dc916a832ec4cb9ea19.
2020-07-11 03:38:16 +02:00
Wuzzy
f1001432eb Revert "Tweak breath icons"
This reverts commit 5d65623d90f45049da07964c1cdd01412a9f1fdc.
2020-07-11 03:38:14 +02:00
Wuzzy
a41453964a Version 2.3.0 2020-07-11 03:28:39 +02:00
Wuzzy
5d65623d90 Tweak breath icons 2020-07-11 03:28:01 +02:00
Wuzzy
f6d539249e More bg icon cleanup 2020-07-11 03:25:35 +02:00
Wuzzy
746945dd0f 12×12 textures, compress textures 2020-07-11 03:09:14 +02:00
Wuzzy
37eff8b2d2 Fix breath bar that was broken by MT 5.3.0 2020-07-11 02:59:12 +02:00
Wuzzy
844fff43de Use MT native support for "background icons" 2020-07-11 02:57:23 +02:00
Wuzzy
a250d2a350 Add z-index to HUD elements 2020-04-07 01:06:49 +02:00
Wuzzy
7993feac07 Version 2.2.2 2020-03-13 18:11:13 +01:00
Wuzzy
b19b5f090a Fix another crash 2020-03-13 18:10:52 +01:00
Wuzzy
9a8a3f0f8c Version 2.2.1 2020-03-13 07:55:01 +01:00
Wuzzy
2eb2df946b Add nil check in hb.change_hudbar 2020-03-13 07:53:24 +01:00
Wuzzy
2ffcd94dd6 Version 2.2.0 2020-02-04 22:11:43 +01:00
Wuzzy
8d3fa950f8 Update translation credits 2020-02-04 22:10:41 +01:00
wuniversales
332aa18452 Add Spanish translation 2020-02-04 22:07:34 +01:00
Wuzzy
99ebd71da7 Update credits 2019-09-17 11:21:19 +02:00
Wuzzy
699e356609 Add Russian locale by lmk 2019-09-17 11:20:12 +02:00
Wuzzy
8c80745ecb Version 2.1.0 2019-09-13 19:57:04 +02:00
Wuzzy
1e3def3cfa Set bar_size to nil in progress_bar again
See the lengthy comment to learn why
2019-09-13 19:56:22 +02:00
Wuzzy
48d9fd6a12 Allow to specify number format strings explicitly
Also, the default number format string is now "%d"
2019-09-13 19:50:23 +02:00
Wuzzy
085a2aa901 Version 2.0.0 2019-04-01 12:55:40 +02:00
Wuzzy
14a535de0d Update API documentation 2019-04-01 12:38:07 +02:00
Wuzzy
afb0242b3b Restructure format_string_config 2019-04-01 12:23:54 +02:00
Wuzzy
915fab08e2 Always send update when changing hide state
This fixes a problem in hbarmor not getting the correct hide state initially.
2019-04-01 12:17:21 +02:00
Wuzzy
895fcae716 Better support for translatable format string 2019-04-01 11:49:30 +02:00
Wuzzy
07b9f766d2 Make format string params changable 2019-03-30 14:57:39 +01:00
Wuzzy
a3fede159b Support custom hp_max/breath_max 2019-03-30 13:56:17 +01:00
Wuzzy
5710667766 Fix translation of format string 2019-03-20 13:38:31 +01:00
Wuzzy
1568d1f418 Add explicit progress bar size 2019-03-20 13:35:36 +01:00
Wuzzy
8b577c7424 Move description into mod.conf 2019-03-20 13:31:27 +01:00
Wuzzy
8d2d2d6070 Remove old changelog 2019-03-20 13:31:00 +01:00
Wuzzy
94b9c545da Move away from intllib in favor of MT 5.0.0 2019-03-20 13:30:28 +01:00
Wuzzy
ba21f47489 Version 1.11.0 2018-02-05 21:24:53 +01:00
Wuzzy
90688e4d45 Add Malay locale by muhdnurhidayat 2018-02-05 21:23:31 +01:00
Wuzzy
bec8afed8b Version 1.10.0, update credits 2017-09-18 17:49:48 +02:00
Wuzzy
b5e84b2b50 Add Dutch locale by kingoscargames 2017-09-18 16:31:17 +02:00
Wuzzy
99cdbddc64 Add Italian locale by Hamlet 2017-09-18 16:31:03 +02:00
Wuzzy
ec238287cb No longer set progress bar image size explicitly
This may fix problems with some people having the progress bar displaced.
2017-09-18 16:28:38 +02:00
Wuzzy
1e522e2896 Use MIT License 2017-09-18 16:17:42 +02:00
Wuzzy
aa5fef1298 Replace deprecated intllib call:
- 'Getter' with 'make_gettext_pair' if available

Thanks, AntumDeluge!
2017-07-06 03:12:07 +02:00
Wuzzy
f19a85c537 Version 1.9.0 2017-07-02 18:56:32 +02:00
Wuzzy
9145f492e8 Move default settings into new Lua file 2017-07-02 18:50:17 +02:00
Wuzzy
5e06b35e79 Add hb.get_hudbar_identifiers() 2017-07-02 18:44:24 +02:00
Wuzzy
e09eb8ab4f Use 0.4.16 settings syntax
This breaks compability with Minetest 0.4.15, 0.4.14, 0.4.13 and 0.4.12
2017-06-20 16:38:52 +02:00
Wuzzy
bd0641af52 Update credits in README file 2017-05-29 16:20:32 +02:00
Wuzzy
f273a9e1f3 Version 1.8.0 2017-05-29 16:18:35 +02:00
Wuzzy
e4c8510282 Add Turkish translation 2017-05-29 16:17:31 +02:00
Wuzzy
e5989f4c0d Version 1.7.2 2017-05-29 16:15:17 +02:00
Wuzzy
cfebd5138d Explicitly set statbar size for progress bars 2017-05-29 16:14:40 +02:00
Wuzzy
fa82d2df1c Version 1.7.1 2017-02-25 02:06:02 +01:00
Wuzzy
ea58a71e17 Fix crash HP changed before player was registered 2017-02-25 02:04:15 +01:00
Wuzzy
e11a52d8fb Version 1.7.0 2016-12-03 19:58:34 +01:00
Wuzzy
7cf82b4e2f Move statbars 2 pixels up 2016-12-03 02:24:45 +01:00
Wuzzy
d3e51926bc Fix README.md syntax error 2016-12-03 01:23:12 +01:00
Wuzzy
5c0f165ddf Event-based health bar change 2016-12-02 23:04:54 +01:00
Wuzzy
3c182884dc Fix breath and health not being updated anymore 2016-12-02 22:36:10 +01:00
Wuzzy
3d74745aec Big statbar icons, introduce new offset config 2016-12-02 21:40:46 +01:00
Wuzzy
05f5ec0622 Version 1.6.1 2016-11-22 15:13:00 +01:00
Wuzzy
d099ae91e2 Remove stupid testing code 2016-11-22 15:12:09 +01:00
Wuzzy
48045ec7f0 Version 1.6.0 2016-11-22 15:03:44 +01:00
Wuzzy
92d8c786a9 Version 1.6.0 2016-11-22 15:03:06 +01:00
Wuzzy
6c0c617b39 Fix possible crash after player left 2016-11-22 14:59:40 +01:00
Wuzzy
893ba4e577 Version 1.5.1 2016-11-12 21:09:24 +01:00
Wuzzy
27336cee7d Fix outdated inttlib boilerplate 2016-11-09 01:49:05 +01:00
Wuzzy
ac2085d0f0 Use new screenshot with 3:2 aspect ratio 2016-11-03 23:18:22 +01:00
Wuzzy
aed5c70c8a Update version to 1.5.0 2016-10-20 16:28:03 +02:00
Wuzzy
4931aff43f Merge https://repo.or.cz/minetest_hudbars/brunomine 2016-10-20 16:23:06 +02:00
BrunoMine
afad4e847d Add translate into portuguese 2016-08-14 14:22:46 -03:00
BrunoMine
008388036c Remove test 2016-08-14 13:53:19 -03:00
BrunoMine
43931527c4 locale/pt.txt 2016-08-14 13:45:06 -03:00
Wuzzy
9a78ce745f Fix some Luacheck warnings 2016-08-11 17:21:33 +02:00
Wuzzy
5348d26a2e Add another string for translation 2016-08-08 03:57:20 +02:00
Wuzzy
40b7c35a7d Tweak breath bgicon 2016-08-05 21:38:31 +02:00
Wuzzy
6d850edf96 Add breath background icon for statbar_modern 2016-08-05 21:14:42 +02:00
Wuzzy
3b57b2cd4a Bugfix: statbar_modern was not correctly hidden 2016-08-05 20:39:28 +02:00
Wuzzy
d64dcb83b5 Move text 1px up so it fits better into box 2016-08-05 17:59:41 +02:00
Wuzzy
1786ae2cab Add intllib support 2016-08-05 16:54:52 +02:00
Wuzzy
f06e3c362f 1.4.1: Fix bug in hb.change_hudbar being a no-op 2016-07-23 11:47:50 +02:00
Wuzzy
c26dd7d6a4 Version 1.4.0 2016-07-03 00:22:51 +02:00
Wuzzy
9af3f328fc Minor API.md text update 2016-07-03 00:21:09 +02:00
Wuzzy
fff42e2a42 Allow to change HUD bar images and label later 2016-07-03 00:18:54 +02:00
Wuzzy
1916c220b7 Version 1.3.0 2016-07-02 22:10:27 +02:00
Wuzzy
41cdf147fa Add description.txt and screenshot.png 2016-07-02 22:09:02 +02:00
Wuzzy
003c6214ed Convert readme file to Markdown format 2016-07-02 21:46:22 +02:00
Wuzzy
c25c2d1b6e Fix description of hudbars_tick 2016-07-02 21:26:15 +02:00
Wuzzy
5bff4d453c Remove redundant commenRemove redundant comment 2016-07-02 21:14:30 +02:00
Wuzzy
21651fcbe8 Fix hudbars_tick = hudbars_vmargin 2016-07-02 21:11:03 +02:00
Wuzzy
0d022110eb Add settings to advanced settings menu 2016-07-02 21:09:57 +02:00
Wuzzy
185f0f5b2f Add mod.conf 2016-07-02 19:37:30 +02:00
Wuzzy
5741b7203c Remove incorrect text in README file 2016-07-02 19:27:31 +02:00
Wuzzy
44a1313d2f Version 1.2.1, update changelog 2015-05-25 16:01:28 +02:00
Wuzzy
3362152656 Forceload default HUD bars, fixing a crash when changing enable_damage in-game 2015-05-25 15:59:49 +02:00
Wuzzy
2a19edbc5f Declare version 1.2.0 2015-05-21 16:45:44 +02:00
Wuzzy
39c1fcfe2f Various settings, now only use minetest.conf instead of hudbars.conf 2015-05-20 17:42:38 +02:00
Wuzzy
9752ddedf6 Typo fixes 2015-05-20 16:06:46 +02:00
Wuzzy
fb2cf988de Bar length is now rounded towards nearest integer 2015-05-20 00:23:21 +02:00
Wuzzy
390c24c193 Update changelog 2015-05-20 00:15:47 +02:00
Wuzzy
9db2fcba34 Update API.md on icons 2015-05-20 00:02:40 +02:00
Wuzzy
2a35745ec9 Fix stupid bug (setting_getbool instead of setting_get) 2015-05-19 23:42:07 +02:00
Wuzzy
8d2321d647 Fix typo 2015-05-19 23:39:26 +02:00
Wuzzy
9d76643388 Fix reverting to default setting value not working 2015-05-19 23:38:13 +02:00
Wuzzy
4ac3b25539 Add alternative statbar display modes
For those nostalgists. ;-)
2015-05-19 23:35:47 +02:00
Wuzzy
897d40e47b Rename display_mode to alignment_pattern 2015-05-19 22:35:24 +02:00
Wuzzy
b68af069a4 Add preliminary display mode setting
Intentionally not in README.txt yet, because the positions cannot be set in minetest.conf yet.
2015-05-19 22:28:55 +02:00
Wuzzy
fc66c4f0a5 Code cleanup 2015-05-19 21:49:25 +02:00
Wuzzy
f2efdea814 Add HUD bar sorting feature 2015-05-19 21:40:54 +02:00
Wuzzy
012623b235 Update changelog and release 1.1.0 2015-03-23 18:37:56 +01:00
Wuzzy
015e23c6f2 Add setting to configure breath bar auto-hiding 2015-03-23 18:35:19 +01:00
Wuzzy
2691a4e320 Increment version and update changelog 2015-03-04 04:41:00 +01:00
Wuzzy
e5d1e21a41 Adjust default HUD bars position for MT 0.4.12 2015-03-04 04:40:07 +01:00
Wuzzy
c5654808ca Version 1.0.2 2015-02-23 01:41:17 +01:00
Wuzzy
cfe8b3a60b Remove pointless delays and useless code 2015-02-23 01:39:48 +01:00
Wuzzy
25b59646c2 Fix HUD elements disappearing for reconnectors 2015-02-23 01:34:13 +01:00
Wuzzy
5c5b516834 Set version to 1.0.1 2015-02-21 17:24:01 +01:00
27 changed files with 783 additions and 237 deletions

2
.mailmap Normal file
View File

@ -0,0 +1,2 @@
Wuzzy <Wuzzy@disroot.org> <Wuzzy2@mail.ru>
Wuzzy <Wuzzy@disroot.org> <almikes@aol.com>

89
API.md
View File

@ -1,5 +1,5 @@
API documentation for the HUD bars mod 1.0.0 API documentation for the HUD bars mod
============================================ ======================================
## Introduction ## Introduction
This API allows you to add, change, hide and unhide custom HUD bars for this mod. This API allows you to add, change, hide and unhide custom HUD bars for this mod.
@ -45,13 +45,14 @@ a vertical gradient.
### Icon ### Icon
A 16×16 image shown left of the HUD bar. This is optional. A 16×16 image shown left of the HUD bar. This is optional.
### `hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string)` ### `hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string, format_string_config)`
This function registers a new custom HUD bar definition to the HUD bars mod, so it can be later used to be displayed, changed, hidden This function registers a new custom HUD bar definition to the HUD bars mod, so it can be later used to be displayed, changed, hidden
and unhidden on a per-player basis. and unhidden on a per-player basis.
Note this does not yet display the HUD bar. Note this does not yet display the HUD bar.
The HUD bars will be displayed in a “first come, first serve” order. This mod does not allow fow a custom order or a way to set it The HUD bars will be displayed in a “first come, first serve” order. This API does not allow fow a custom order or a way to set it
manually in a reliable way. manually in a reliable way. However, you can use the setting `hudbars_sorting` for this. See the advanced setting menu in Minetest
for more information.
#### Parameters #### Parameters
@ -59,12 +60,27 @@ manually in a reliable way.
* `text_color`: A 3-octet number defining the color of the text. The octets denote, in this order red, green and blue and range from `0x00` (complete lack of this component) to `0xFF` (full intensity of this component). Example: `0xFFFFFF` for white. * `text_color`: A 3-octet number defining the color of the text. The octets denote, in this order red, green and blue and range from `0x00` (complete lack of this component) to `0xFF` (full intensity of this component). Example: `0xFFFFFF` for white.
* `label`: A string which is displayed on the HUD bar itself to describe the HUD bar. Try to keep this string short. * `label`: A string which is displayed on the HUD bar itself to describe the HUD bar. Try to keep this string short.
* `textures`: A table with the following fields: * `textures`: A table with the following fields:
* `bar`: The file name of the bar image (as string). * `bar`: The file name of the bar image (as string). This is only used for the `progress_bar` bar type (see `README.txt`, settings section).
* `icon`: The file name of the icon, as string. This field can be `nil`, in which case no icon will be used. * `icon`: The file name of the icon, as string. For the `progress_bar` type, it is shown as single image left of the bar, for the two statbar bar types, it is used as the statbar icon and will be repeated. This field can be `nil`, in which case no icon will be used, but this is not recommended, because the HUD bar will be invisible if the one of the statbar bar types is used.
* `bgicon`: The file name of the background icon, it is used as the background for the modern statbar mode only. This field can be `nil`, in which case no background icon will be displayed in this mode.
* `default_start_value`: If this HUD bar is added to a player, and no initial value is specified, this value will be used as initial current value * `default_start_value`: If this HUD bar is added to a player, and no initial value is specified, this value will be used as initial current value
* `default_max_value`: If this HUD bar is added to a player, and no initial maximum value is specified, this value will be used as initial maximum value * `default_max_value`: If this HUD bar is added to a player, and no initial maximum value is specified, this value will be used as initial maximum value
* `default_start_hidden`: The HUD bar will be initially start hidden by default when added to a player. Use `hb.unhide_hudbar` to unhide it. * `default_start_hidden`: The HUD bar will be initially start hidden by default when added to a player. Use `hb.unhide_hudbar` to unhide it.
* `format_string`: This is optional; You can specify an alternative format string display the final text on the HUD bar. The default format string is “`%s: %d/%d`” (in this order: Label, current value, maximum value). See also the Lua documentation of `string.format`. * `format_string`: Optional; You can specify an alternative format string to use for the final text on the HUD bar. The default format string is “`@1: @2/@3`” (The “@” numbers are placeholders that have a meaning in this order: @1 = Label, @2 = current value, @3 = maximum value). Do *not* use minetest.translator on this string, the string will be translated by `hudbars`, but you still must put this string into the translation catalogue file.
* `format_string_config`: Required if `format_string` is set. This allows to change which parameters to use in the format string. It's a table with these fields:
* `textdomain`: Text domain of the format string, used by `minetest.translate` if missing or set to `nil` will use `minetest.get_translator`
* `order`: Table that contains the order of the placeholders. It's also possible to remove placeholders. Default order: `{ "label", "value", "max_value" }`
* `format_value`: Format string to apply when displaying `value`. Syntax is same as in `string.format`. Default: `"%d"`
* `format_max_value`: Same as `format_value` but is applied to `max_value`
#### Example
Example (mostly) from `hbarmor` mod:
```
hb.register_hudbar("armor", 0xFFFFFF, minetest.translator("hbarmor", "Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 100, hbarmor.autohide, N("@1: @2%"), { order = { "label", "value" }, textdomain = "hbarmor" } )
```
Displays an armor HUD bar with a label of the form „Armor: 53%“. (`N` is a dummy function that returns its argument, used to make the string visible for translator scripts.)
#### Return value #### Return value
Always `nil`. Always `nil`.
@ -93,30 +109,46 @@ the HUD bar will be initially be shown to the player.
* `start_hidden`: Whether the HUD bar is initially hidden. This is optional, `default_start_hidden` of the registration function will be used as default * `start_hidden`: Whether the HUD bar is initially hidden. This is optional, `default_start_hidden` of the registration function will be used as default
#### Return value #### Return value
Always `nil`. `true` on success, `false` otherwise.
## Modifying a HUD bar ## Modifying a HUD bar
After a HUD bar has been added, you can change the current and maximum value on a per-player basis. After a HUD bar has been added, you can change the current and maximum value and other attributes on a per-player basis.
You use the function `hb.change_hudbar` for this. You use the function `hb.change_hudbar` for this.
### `hb.change_hudbar(player, identifier, new_value, new_max_value)` ### `hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon, new_bgicon, new_bar, new_label, new_text_color)`
Changes the values of an initialized HUD bar for a certain player. `new_value` and `new_max_value` Changes the values and the appearance of an initialized HUD bar for a certain player. `new_value`
can be `nil`; if one of them is `nil`, that means the value is unchanged. If both values and `new_max_value` are the most important parameters as they specify the new current and maximum new values, you do not need
are `nil`, this function is a no-op. to worry too much about the other parameters.
This function also tries minimize the amount of calls to `hud_change` of the Minetest Lua API, and
therefore, network traffic. `hud_change` is only called if it is actually needed, i.e. when the The following parameters are less important and provided for styling the HUD bar after registration (if
actual length of the bar or the displayed string changed, so you do not have to worry about it. this is desired). The “styling” parameters parallel the parameters of `hb.register_hudbar`. It is
recommended to not change the style of a HUD bar too often as this can be distracting or confusing
for players.
`new_value`, `new_max_value` `new_icon`, `new_bgicon`, `new_bar`, `new_label` and `new_text_color` can be
`nil`; if one of them is `nil`, that means the value is unchanged. If all those values are `nil`, this
function is a no-op.
This function tries to minimize the amount of calls to `hud_change` of the Minetest Lua API
(and thus, network traffic), when you only change the value and/or maximum value. In this case,
`hud_change` is only called if it is actually needed, e.g. when the actual length of the bar
or the displayed string changed, so you do not have to worry about it. There is, however, no
such network optimization for the “styling” parameters, so keep this in mind.
#### Parameters #### Parameters
* `player`: `ObjectRef` of the player to which the HUD bar belongs to * `player`: `ObjectRef` of the player to which the HUD bar belongs to
* `identifier`: The identifier of the HUD bar type to change, as specified in `hb.register_hudbar`. * `identifier`: The identifier of the HUD bar type to change, as specified in `hb.register_hudbar`.
* `new_value`: The new current value of the HUD bar * `new_value`: The new current value of the HUD bar
* `new_max_value`: The new maximum value of the HUD bar * `new_max_value`: The new maximum value of the HUD bar
* `new_icon`: File name of the new icon
* `new_bgicon`: File name of the new background icon for the modern-style statbar
* `new_bar`: File name of the new bar segment image
* `new_label`: A new text label of the HUD bar. Note the format string still applies
* `new_text_color`: A 3-octet number defining the new color of the text.
#### Return value #### Return value
Always `nil`. `true` on success, `false` otherwise.
## Hiding and unhiding a HUD bar ## Hiding and unhiding a HUD bar
@ -137,7 +169,7 @@ Hides the specified HUD bar from the screen of the specified player.
* `identifier`: The identifier of the HUD bar type to hide, as specified in `hb.register_hudbar`. * `identifier`: The identifier of the HUD bar type to hide, as specified in `hb.register_hudbar`.
#### Return value #### Return value
Always `nil`. `true` on success, `false` otherwise.
### `hb.unhide_hudbar(player, identifier)` ### `hb.unhide_hudbar(player, identifier)`
@ -148,26 +180,31 @@ Makes a previously hidden HUD bar visible again to a player.
* `identifier`: The identifier of the HUD bar type to unhide, as specified in `hb.register_hudbar`. * `identifier`: The identifier of the HUD bar type to unhide, as specified in `hb.register_hudbar`.
#### Return value #### Return value
Always `nil`. `true` on success, `false` otherwise.
## Reading HUD bar information ## Reading HUD bar information
It is also possible to read information about an active HUD bar. It is also possible to read information about existing HUD bars.
### `hb.get_hudbar_state(player, identifier)` ### `hb.get_hudbar_state(player, identifier)`
Returns the current state of the active player's HUD bar. Returns the current state of the active player's HUD bar. Will return `nil` if the hudbar is not initialized.
#### Parameters #### Parameters
* `player`: `ObjectRef` of the player to which the HUD bar belongs to * `player`: `ObjectRef` of the player to which the HUD bar belongs to
* `identifier`: The identifier of the HUD bar type to hide, as specified in `hb.register_hudbar`. * `identifier`: The identifier of the HUD bar type to hide, as specified in `hb.register_hudbar`.
#### Return value #### Return value
A table which holds information on the current state of the HUD bar. Note the table is a deep On success, returns a table which holds information on the current state of the HUD bar. Note
copy of the internal HUD bar state, it is *not* a reference; the information hold by the table is the table is a deep copy of the internal HUD bar state, it is *not* a reference; the information
only true for the moment you called this function. The fields of this table are: hold by the table is only true for the moment you called this function. The fields of this table are:
* `value`: Current value of HUD bar. * `value`: Current value of HUD bar.
* `max`: Current maximum value of HUD bar. * `max`: Current maximum value of HUD bar.
* `hidden`: Boolean denoting whether the HUD bar is hidden. * `hidden`: Boolean denoting whether the HUD bar is hidden.
* `barlength`: The length of the HUD bar in pixels. This field is meaningless if the HUD bar is currently hidden. * `barlength`: The length of the HUD bar in pixels. This field is meaningless if the HUD bar is currently hidden.
* `text`: The text shown on the HUD bar. This fiels is meaningless if the HUD bar is currently hidden. * `text`: The text shown on the HUD bar. This fiels is meaningless if the HUD bar is currently hidden.
If the player does not exist, returns `nil` instead.
### `hb.get_hudbar_identifiers()`
Returns a table of all currently registered HUD bar identifiers.

101
README.md Normal file
View File

@ -0,0 +1,101 @@
# minetest HUD bars
HUD mod to display as bars and API for
## Information
--------------
This mod changes the HUD of Minetest. It replaces the default health and breath
symbols by horizontal colored bars with text showing the number (or more configured one).
Furthermore, it enables other mods to add their own custom bars to the HUD,
this mod will place them accordingly.
![](screenshot.png)
## TEchnical info
-----------------
> **Warning** Keep in mind if running a server with this mod,
that the custom position should be displayed correctly on every screen size.
#### Dependencies
There's no depends
#### Current version
The current version is 2.3.4.0 its a plus fork from original cos current
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.
#### Settings
This mod can be configured quite a bit. You can change HUD bar appearance, offsets, ordering, and more.
Use the advanced settings menu in Minetest for detailed configuration.
| configuration name | Description | type | values, min/default/max |
| ---------------------------- | ------------------------------------- | ---- | ------------------------ |
| 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_alignment_pattern | HUD bars alignment pattern | enum | zigzag zigzag,stack_up,stack_down |
| hudbars_sorting | HUD bars order | string | breath=1, health=0 |
| hudbars_pos_left_x | Left HUD bar screen x position | float | 0.5 0.0 1.0 |
| hudbars_pos_left_y | Left HUD bar screen y position | float | 1.0 0.0 1.0 |
| hudbars_pos_right_x | Right HUD bar screen x position | float | 0.5 0.0 1.0 |
| hudbars_pos_right_y | Right HUD bar screen y position | float | 1.0 0.0 1.0 |
| hudbars_start_offset_left_x | Left HUD bar x offset | int | -175 |
| hudbars_start_offset_left_y | Left HUD bar y offset | int | -86 |
| hudbars_start_offset_right_x | Right HUD bar x offset | int | 15 |
| hudbars_start_offset_right_y | Right HUD bar y offset | int | -86 |
| hudbars_start_statbar_offset_left_x | Left HUD statbar x offset | int | -265 |
| hudbars_start_statbar_offset_left_y | Left HUD statbar y offset | int | -90 |
| hudbars_start_statbar_offset_right_x | Right HUD statbar x offset | int | 25 |
| hudbars_start_statbar_offset_right_y | Right HUD statbar y offset | int | -90 |
| hudbars_vmargin | Vertical distance between HUD bars | int | 24 0 |
| hudbars_tick | Default HUD bars update interval | float | 0.1 0.0 4.0 |
#### API
The API is used to add your own custom HUD bars.
Documentation for the API of this mod can be found in [`API.md`.](API.md)
## Legal
#### License of source code
Author: Wuzzy (2015)
Also: This mod was forked from the “Better HUD” [hud] mod by BlockMen.
Translations:
* German: Wuzzy
* Portuguese: BrunoMine
* Turkish: admicos
* Dutch: kingoscargames
* Italian: Hamlet
* Malay: muhdnurhidayat
* Russian: Imk
* Spanish: wuniversales
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the MIT License.
#### Licenses of textures
* `hudbars_icon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen
* `hudbars_bgicon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen
* `hudbars_icon_breath.png`—kaeza (MIT License), modified by BlockMen, modified again by Wuzzy
* `hudbars_bgicon_breath.png`—based on previous image, edited by Wuzzy (MIT License)
* `hudbars_bar_health.png`—Wuzzy (MIT License)
* `hudbars_bar_breath.png`—Wuzzy (MIT License)
* `hudbars_bar_background.png`—Wuzzy (MIT License)
#### License references
* [CC-BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)
* [MIT License](https://opensource.org/licenses/MIT)

View File

@ -1,48 +0,0 @@
Minetest mod: HUD bars
======================
Version: 1.0.0
This software uses semantic versioning, as defined by version 2.0.0 of the SemVer
standard. <http://semver.org/>
License of source code: WTFPL
-----------------------------
Author: Wuzzy (2015)
Forked from the “Better HUD” [hud] mod by BlockMen.
Using the mod:
--------------
This mod changes the HUD of Minetest. It replaces the default health and breath symbols by horizontal colored bars with text showing
the number.
Furthermore, it enables other mods to add their own custom bars to the HUD, this mod will place them accordingly.
You can create a “hudbars.conf” file to customize the positions of the health and breath bars. Take a look at “hudbars.conf.example”
to get more infos. The lines starting with “--” are comments, remove the two dashes to activate a setting. Settings which are not
set will use a default value instead.
IMPORTANT:
Keep in mind if running a server with this mod, that the custom position should be displayed correctly on every screen size!
API:
----
The API is used to add your own custom HUD bars.
Documentation for the API of this mod can be found in API.md.
License of textures:
--------------------
hudbars_icon_health.png - celeron55 (CC BY-SA 3.0), modified by BlockMen
hudbars_icon_breath.png - kaeza (WTFPL), modified by BlockMen
hudbars_bar_health.png - Wuzzy (WTFPL)
hudbars_bar_breath.png - Wuzzy (WTFPL)
hudbars_bar_background.png - Wuzzy(WTFPL)
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.

View File

@ -1,36 +0,0 @@
Note: This software uses semantic versioning,
as of version 2.0.0 of the standard <http://semver.org/>.
0.1.0
-----
- Initial release, forked from mod “Better HUD” [hud].
0.2.0
-----
- Add API documentation
0.3.0
-----
- Rename main table from “hud” to “hb” (affects function names!)
- Arguments 3-4 of hb.change_hudbar can be nil for values which should not change
- Add proper function hb.init_hudbar, replaces odd call to hud.hudtables[identifier].add_all
- Update API documentation and fix mistakes
- Use “hudbars.conf” instead of “hud.conf”
0.4.0
-----
- New function: hb.get_hudbar_state to get information about the state of an active HUD bar, such as values, whether it is hidden, etc.
- hb.change_hudbar has been optimized to call hud_change fewer times, which is hopefully good for networking
- Rename hb.register_hudbar parameter “start_hide” to “start_hidden”
- start_hidden parameter now finally works
- Do not affect other HUD flags (crosshair, wielditem, etc.) when starting mod
- Show error message when trying to call hb.init_hudbar or hb.change_hudbar with bad values
- Update documentation
- Lots of refactoring
- Health and breath bar now use API
1.0.0
-----
- Add new parameter start_hidden to hb.init_hudbar, specified whether HUD bar is hidden on start
- Copy-editing of API.md and README.txt
- Internal: Fix add_all weirdness

57
default_settings.lua Normal file
View File

@ -0,0 +1,57 @@
-- (Hardcoded) default settings
hb.settings.max_bar_length = 160
hb.settings.statbar_length = 20
-- Statbar positions
hb.settings.pos_left = {}
hb.settings.pos_right = {}
hb.settings.start_offset_left = {}
hb.settings.start_offset_right= {}
hb.settings.pos_left.x = hb.load_setting("hudbars_pos_left_x", "number", 0.5)
hb.settings.pos_left.y = hb.load_setting("hudbars_pos_left_y", "number", 1)
hb.settings.pos_right.x = hb.load_setting("hudbars_pos_right_x", "number", 0.5)
hb.settings.pos_right.y = hb.load_setting("hudbars_pos_right_y", "number", 1)
hb.settings.bar_type = hb.load_setting("hudbars_bar_type", "string", "progress_bar", {"progress_bar", "statbar_classic", "statbar_modern"})
if hb.settings.bar_type == "progress_bar" then
hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_offset_left_x", "number", -175)
hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_offset_left_y", "number", -86)
hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_offset_right_x", "number", 15)
hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_offset_right_y", "number", -86)
else
hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_statbar_offset_left_x", "number", -265)
hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_statbar_offset_left_y", "number", -90)
hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_statbar_offset_right_x", "number", 25)
hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_statbar_offset_right_y", "number", -90)
end
hb.settings.vmargin = hb.load_setting("hudbars_vmargin", "number", 24)
hb.settings.tick = hb.load_setting("hudbars_tick", "number", 0.1)
-- Experimental setting: Changing this setting is not officially supported, do NOT rely on it!
hb.settings.forceload_default_hudbars = hb.load_setting("hudbars_forceload_default_hudbars", "bool", true)
-- Misc. settings
hb.settings.alignment_pattern = hb.load_setting("hudbars_alignment_pattern", "string", "zigzag", {"zigzag", "stack_up", "stack_down"})
hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", true)
local sorting = minetest.settings:get("hudbars_sorting")
if sorting ~= nil then
hb.settings.sorting = {}
hb.settings.sorting_reverse = {}
for k,v in string.gmatch(sorting, "(%w+)=(%w+)") do
hb.settings.sorting[k] = tonumber(v)
hb.settings.sorting_reverse[tonumber(v)] = k
end
else
hb.settings.sorting = { ["health"] = 0, ["breath"] = 1 }
hb.settings.sorting_reverse = { [0] = "health", [1] = "breath" }
end
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)
if minetest.has_feature("object_use_texture_alpha") then
core.PLAYER_MAX_HP_DEFAULT = hb.settings.hp_player_maximun
else
core.PLAYER_MAX_HP = hb.settings.hp_player_maximun
end

View File

@ -0,0 +1 @@
intllib?

1
description.txt Normal file
View File

@ -0,0 +1 @@
HUD mod to display as bars and API for

View File

@ -1,24 +0,0 @@
-- HUD bars example config file
-------------------------------
-- Currently you can customize the starting position of the first bottom two HUD bars
-- and the vertical margin. That's all.
-- Remove the two dashes to activate a setting. Lua syntax is used.
-- The examples are all equal to the mod defaults
-------------------------------------------------------------------------------------------------------
-- Vertical space between two HUD bars
-- hb.settings.vmargin = 24
-- Pos of the first HUD bar the the left (“pos”, as in hud definition of hud_add of Minetest Lua API)
-- hb.settings.pos_left = { x=0.5, y=1 }
-- Pos of the first HUD bar the the right
-- hb.settings.pos_right= { x = 0.5, y = 1 }
-- Offset of the first HUD bar to the left (“offset”, as in HUD definition)
-- hb.settings.start_offset_left = { x = -175, y = -70 }
-- Offset of the first HUD bar to the right
-- hb.settings_start_offset_right = { x = 15, y = -70 }

404
init.lua
View File

@ -1,3 +1,29 @@
local S
-- Intllib
if minetest.get_translator ~= nil then
S = minetest.get_translator("hudbars") -- 5.x translation function
else
if minetest.get_modpath("intllib") then
dofile(minetest.get_modpath("intllib") .. "/init.lua")
if intllib.make_gettext_pair then
gettext, ngettext = intllib.make_gettext_pair() -- new gettext method
else
gettext = intllib.Getter() -- old text file method
end
S = gettext
else -- boilerplate function
S = function(str, ...)
local args = {...}
return str:gsub("@%d+", function(match)
return args[tonumber(match:sub(2))]
end)
end
end
end
local N = function(s) return s end
hb = {} hb = {}
hb.hudtables = {} hb.hudtables = {}
@ -5,19 +31,90 @@ hb.hudtables = {}
-- number of registered HUD bars -- number of registered HUD bars
hb.hudbars_count = 0 hb.hudbars_count = 0
-- table which records which HUD bar slots have been “registered” so far; used for automatic positioning
hb.registered_slots = {}
hb.settings = {} hb.settings = {}
-- default settings function hb.load_setting(sname, stype, defaultval, valid_values)
hb.settings.max_bar_length = 160 local sval
if stype == "string" then
sval = minetest.settings:get(sname)
elseif stype == "bool" then
sval = minetest.settings:get_bool(sname)
elseif stype == "number" then
sval = tonumber(minetest.settings:get(sname))
end
if sval ~= nil then
if valid_values ~= nil then
local valid = false
for i=1,#valid_values do
if sval == valid_values[i] then
valid = true
end
end
if not valid then
minetest.log("error", "[hudbars] Invalid value for "..sname.."! Using default value ("..tostring(defaultval)..").")
return defaultval
else
return sval
end
else
return sval
end
else
return defaultval
end
end
-- statbar positions -- Load default settings
hb.settings.pos_left = { x=0.5, y=1 } dofile(minetest.get_modpath("hudbars").."/default_settings.lua")
hb.settings.pos_right= { x = 0.5, y = 1 }
hb.settings.start_offset_left = { x = -175, y = -70 }
hb.settings.start_offset_right = { x = 15, y = -70 }
hb.settings.vmargin = 24 local function player_exists(player)
hb.settings.tick = 0.1 return player ~= nil and player:is_player()
end
local function checksupportmax(player)
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
hb.settings.hp_player_maximun = 20
hb.settings.br_player_maximun = 10
if player_exists(player) then
player:set_properties({hp_max = 20})
else
minetest.log("error","[hudbars] WARNING! minetest version do not support customization of hp_max healt player values")
end
end
end
local function make_label(format_string, format_string_config, label, start_value, max_value)
local params = {}
local order = format_string_config.order
for o=1, #order do
if order[o] == "label" then
table.insert(params, label)
elseif order[o] == "value" then
if format_string_config.format_value then
table.insert(params, string.format(format_string_config.format_value, start_value))
else
table.insert(params, start_value)
end
elseif order[o] == "max_value" then
if format_string_config.format_max_value then
table.insert(params, string.format(format_string_config.format_max_value, max_value))
else
table.insert(params, max_value)
end
end
end
local ret
if format_string_config.textdomain and minetest.translate ~= nil then
ret = minetest.translate(format_string_config.textdomain, format_string, unpack(params))
else
ret = S(format_string, unpack(params))
end
return ret
end
-- Table which contains all players with active default HUD bars (only for internal use) -- Table which contains all players with active default HUD bars (only for internal use)
hb.players = {} hb.players = {}
@ -26,7 +123,17 @@ function hb.value_to_barlength(value, max)
if max == 0 then if max == 0 then
return 0 return 0
else else
return math.ceil((value/max) * hb.settings.max_bar_length) if hb.settings.bar_type == "progress_bar" then
local x
if value < 0 then x=-0.5 else x = 0.5 end
local ret = math.modf((value/max) * hb.settings.max_bar_length + x)
return ret
else
local x
if value < 0 then x=-0.5 else x = 0.5 end
local ret = math.modf((value/max) * hb.settings.statbar_length + x)
return ret
end
end end
end end
@ -34,24 +141,68 @@ function hb.get_hudtable(identifier)
return hb.hudtables[identifier] return hb.hudtables[identifier]
end end
function hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string) function hb.get_hudbar_position_index(identifier)
if hb.settings.sorting[identifier] ~= nil then
return hb.settings.sorting[identifier]
else
local i = 0
while true do
if hb.registered_slots[i] ~= true and hb.settings.sorting_reverse[i] == nil then
return i
end
i = i + 1
end
end
end
function hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string, format_string_config)
checksupportmax()
minetest.log("action", "hb.register_hudbar: "..tostring(identifier))
local hudtable = {} local hudtable = {}
local pos, offset local pos, offset
if hb.hudbars_count % 2 == 0 then local index = math.floor(hb.get_hudbar_position_index(identifier))
hb.registered_slots[index] = true
if hb.settings.alignment_pattern == "stack_up" then
pos = hb.settings.pos_left pos = hb.settings.pos_left
offset = { offset = {
x = hb.settings.start_offset_left.x, x = hb.settings.start_offset_left.x,
y = hb.settings.start_offset_left.y - hb.settings.vmargin * math.floor(hb.hudbars_count/2) y = hb.settings.start_offset_left.y - hb.settings.vmargin * index
}
elseif hb.settings.alignment_pattern == "stack_down" then
pos = hb.settings.pos_left
offset = {
x = hb.settings.start_offset_left.x,
y = hb.settings.start_offset_left.y + hb.settings.vmargin * index
}
else
if index % 2 == 0 then
pos = hb.settings.pos_left
offset = {
x = hb.settings.start_offset_left.x,
y = hb.settings.start_offset_left.y - hb.settings.vmargin * (index/2)
} }
else else
pos = hb.settings.pos_right pos = hb.settings.pos_right
offset = { offset = {
x = hb.settings.start_offset_right.x, x = hb.settings.start_offset_right.x,
y = hb.settings.start_offset_right.y - hb.settings.vmargin * math.floor((hb.hudbars_count-1)/2) y = hb.settings.start_offset_right.y - hb.settings.vmargin * ((index-1)/2)
} }
end end
end
if format_string == nil then if format_string == nil then
format_string = "%s: %d/%d" format_string = N("@1: @2/@3")
end
if format_string_config == nil then
format_string_config = {}
end
if format_string_config.order == nil then
format_string_config.order = { "label", "value", "max_value" }
end
if format_string_config.format_value == nil then
format_string_config.format_value = "%02d"
end
if format_string_config.format_max_value == nil then
format_string_config.format_max_value = "%02d"
end end
hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden) hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden)
@ -61,7 +212,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
local ids = {} local ids = {}
local state = {} local state = {}
local name = player:get_player_name() local name = player:get_player_name()
local bgscale, iconscale, text, barnumber local bgscale, iconscale, text, barnumber, bgiconnumber
if start_max == 0 or start_hidden then if start_max == 0 or start_hidden then
bgscale = { x=0, y=0 } bgscale = { x=0, y=0 }
else else
@ -70,12 +221,15 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
if start_hidden then if start_hidden then
iconscale = { x=0, y=0 } iconscale = { x=0, y=0 }
barnumber = 0 barnumber = 0
bgiconnumber = 0
text = "" text = ""
else else
iconscale = { x=1, y=1 } iconscale = { x=1, y=1 }
barnumber = hb.value_to_barlength(start_value, start_max) barnumber = hb.value_to_barlength(start_value, start_max)
text = string.format(format_string, label, start_value, start_max) bgiconnumber = hb.settings.statbar_length
text = make_label(format_string, format_string_config, label, start_value, start_max)
end end
if hb.settings.bar_type == "progress_bar" then
ids.bg = player:hud_add({ ids.bg = player:hud_add({
hud_elem_type = "image", hud_elem_type = "image",
position = pos, position = pos,
@ -83,6 +237,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
text = "hudbars_bar_background.png", text = "hudbars_bar_background.png",
alignment = {x=1,y=1}, alignment = {x=1,y=1},
offset = { x = offset.x - 1, y = offset.y - 1 }, offset = { x = offset.x - 1, y = offset.y - 1 },
z_index = 0,
}) })
if textures.icon ~= nil then if textures.icon ~= nil then
ids.icon = player:hud_add({ ids.icon = player:hud_add({
@ -92,16 +247,53 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
text = textures.icon, text = textures.icon,
alignment = {x=-1,y=1}, alignment = {x=-1,y=1},
offset = { x = offset.x - 3, y = offset.y }, offset = { x = offset.x - 3, y = offset.y },
z_index = 1,
}) })
end end
elseif hb.settings.bar_type == "statbar_modern" then
if textures.bgicon ~= nil then
ids.bg = player:hud_add({
hud_elem_type = "statbar",
position = pos,
text = textures.bgicon,
number = bgiconnumber,
alignment = {x=-1,y=-1},
offset = { x = offset.x, y = offset.y },
direction = 0,
size = {x=24, y=24},
z_index = 0,
})
end
end
local bar_image, bgicon, bar_size
if hb.settings.bar_type == "progress_bar" then
bar_image = textures.bar
-- NOTE: Intentionally set to nil. For some reason, on some systems,
-- the progress bar is displaced when the bar_size is set explicitly here.
-- On the other hand, setting this to nil is deprecated in MT 5.0.0 due to
-- a debug log warning, but nothing is explained in lua_api.txt.
-- This section is a potential bug magnet, please watch with care!
-- The size of the bar image is expected to be exactly 2×16 pixels.
bar_size = nil
elseif hb.settings.bar_type == "statbar_classic" or hb.settings.bar_type == "statbar_modern" then
bar_image = textures.icon
if textures.bgicon then bgicon = textures.bgicon end
bar_size = {x=24, y=24}
end
ids.bar = player:hud_add({ ids.bar = player:hud_add({
hud_elem_type = "statbar", hud_elem_type = "statbar",
position = pos, position = pos,
text = textures.bar, text = bar_image,
text2 = bgicon,
number = barnumber, number = barnumber,
item = bgiconnumber,
alignment = {x=-1,y=-1}, alignment = {x=-1,y=-1},
offset = offset, offset = offset,
direction = 0,
size = bar_size,
z_index = 1,
}) })
if hb.settings.bar_type == "progress_bar" then
ids.text = player:hud_add({ ids.text = player:hud_add({
hud_elem_type = "text", hud_elem_type = "text",
position = pos, position = pos,
@ -109,8 +301,10 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
alignment = {x=1,y=1}, alignment = {x=1,y=1},
number = text_color, number = text_color,
direction = 0, direction = 0,
offset = { x = offset.x + 2, y = offset.y }, offset = { x = offset.x + 2, y = offset.y - 1},
z_index = 2,
}) })
end
-- Do not forget to update hb.get_hudbar_state if you add new fields to the state table -- Do not forget to update hb.get_hudbar_state if you add new fields to the state table
state.hidden = start_hidden state.hidden = start_hidden
state.value = start_value state.value = start_value
@ -137,6 +331,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
hudtable.identifier = identifier hudtable.identifier = identifier
hudtable.format_string = format_string hudtable.format_string = format_string
hudtable.format_string_config = format_string_config
hudtable.label = label hudtable.label = label
hudtable.hudids = {} hudtable.hudids = {}
hudtable.hudstate = {} hudtable.hudstate = {}
@ -150,17 +345,26 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
end end
function hb.init_hudbar(player, identifier, start_value, start_max, start_hidden) function hb.init_hudbar(player, identifier, start_value, start_max, start_hidden)
checksupportmax(player)
if not player_exists(player) then return false end
local hudtable = hb.get_hudtable(identifier) local hudtable = hb.get_hudtable(identifier)
hb.hudtables[identifier].add_all(player, hudtable, start_value, start_max, start_hidden) hb.hudtables[identifier].add_all(player, hudtable, start_value, start_max, start_hidden)
return true
end end
function hb.change_hudbar(player, identifier, new_value, new_max_value) function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon, new_bgicon, new_bar, new_label, new_text_color)
if new_value == nil and new_max_value == nil then if new_value == nil and new_max_value == nil and new_icon == nil and new_bgicon == nil and new_bar == nil and new_label == nil and new_text_color == nil then
return return true
end
if not player_exists(player) then
return false
end end
local name = player:get_player_name() local name = player:get_player_name()
local hudtable = hb.get_hudtable(identifier) local hudtable = hb.get_hudtable(identifier)
if not hudtable.hudstate[name] then
return false
end
local value_changed, max_changed = false, false local value_changed, max_changed = false, false
if new_value ~= nil then if new_value ~= nil then
@ -180,6 +384,33 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value)
new_max_value = hudtable.hudstate[name].max new_max_value = hudtable.hudstate[name].max
end end
if hb.settings.bar_type == "progress_bar" then
if new_icon ~= nil and hudtable.hudids[name].icon ~= nil then
player:hud_change(hudtable.hudids[name].icon, "text", new_icon)
end
if new_bgicon ~= nil and hudtable.hudids[name].bgicon ~= nil then
player:hud_change(hudtable.hudids[name].bgicon, "text", new_bgicon)
end
if new_bar ~= nil then
player:hud_change(hudtable.hudids[name].bar , "text", new_bar)
end
if new_label ~= nil then
hudtable.label = new_label
local new_text = make_label(hudtable.format_string, hudtable.format_string_config, new_label, hudtable.hudstate[name].value, hudtable.hudstate[name].max)
player:hud_change(hudtable.hudids[name].text, "text", new_text)
end
if new_text_color ~= nil then
player:hud_change(hudtable.hudids[name].text, "number", new_text_color)
end
else
if new_icon ~= nil and hudtable.hudids[name].bar ~= nil then
player:hud_change(hudtable.hudids[name].bar, "text", new_icon)
end
if new_bgicon ~= nil and hudtable.hudids[name].bg ~= nil then
player:hud_change(hudtable.hudids[name].bg, "text", new_bgicon)
end
end
local main_error_text = local main_error_text =
"[hudbars] Bad call to hb.change_hudbar, identifier: “"..tostring(identifier).."”, player name: “"..name.."”. " "[hudbars] Bad call to hb.change_hudbar, identifier: “"..tostring(identifier).."”, player name: “"..name.."”. "
if new_max_value < new_value then if new_max_value < new_value then
@ -193,7 +424,7 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value)
end end
if hudtable.hudstate[name].hidden == false then if hudtable.hudstate[name].hidden == false then
if max_changed then if max_changed and hb.settings.bar_type == "progress_bar" then
if hudtable.hudstate[name].max == 0 then if hudtable.hudstate[name].max == 0 then
player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0}) player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0})
else else
@ -208,50 +439,66 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value)
hudtable.hudstate[name].barlength = new_barlength hudtable.hudstate[name].barlength = new_barlength
end end
local new_text = string.format(hudtable.format_string, hudtable.label, new_value, new_max_value) if hb.settings.bar_type == "progress_bar" then
local new_text = make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, new_value, new_max_value)
if new_text ~= hudtable.hudstate[name].text then if new_text ~= hudtable.hudstate[name].text then
player:hud_change(hudtable.hudids[name].text, "text", new_text) player:hud_change(hudtable.hudids[name].text, "text", new_text)
hudtable.hudstate[name].text = new_text hudtable.hudstate[name].text = new_text
end end
end end
end end
end
return true
end end
function hb.hide_hudbar(player, identifier) function hb.hide_hudbar(player, identifier)
if not player_exists(player) then return false end
local name = player:get_player_name() local name = player:get_player_name()
local hudtable = hb.get_hudtable(identifier) local hudtable = hb.get_hudtable(identifier)
if(hudtable.hudstate[name].hidden == false) then if hudtable == nil then return false end
if hudtable.hudstate[name].hidden == true then return true end
if hb.settings.bar_type == "progress_bar" then
if hudtable.hudids[name].icon ~= nil then if hudtable.hudids[name].icon ~= nil then
player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0})
end end
player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0}) player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0})
player:hud_change(hudtable.hudids[name].bar, "number", 0)
player:hud_change(hudtable.hudids[name].text, "text", "") player:hud_change(hudtable.hudids[name].text, "text", "")
hudtable.hudstate[name].hidden = true
end end
player:hud_change(hudtable.hudids[name].bar, "number", 0)
player:hud_change(hudtable.hudids[name].bar, "item", 0)
hudtable.hudstate[name].hidden = true
return true
end end
function hb.unhide_hudbar(player, identifier) function hb.unhide_hudbar(player, identifier)
if not player_exists(player) then return false end
local name = player:get_player_name() local name = player:get_player_name()
local hudtable = hb.get_hudtable(identifier) local hudtable = hb.get_hudtable(identifier)
if(hudtable.hudstate[name].hidden) then if hudtable == nil then return false end
local name = player:get_player_name() if hudtable.hudstate[name].hidden == false then return true end
local value = hudtable.hudstate[name].value local value = hudtable.hudstate[name].value
local max = hudtable.hudstate[name].max local max = hudtable.hudstate[name].max
if hb.settings.bar_type == "progress_bar" then
if hudtable.hudids[name].icon ~= nil then if hudtable.hudids[name].icon ~= nil then
player:hud_change(hudtable.hudids[name].icon, "scale", {x=1,y=1}) player:hud_change(hudtable.hudids[name].icon, "scale", {x=1,y=1})
end end
if hudtable.hudstate[name].max ~= 0 then if hudtable.hudstate[name].max ~= 0 then
player:hud_change(hudtable.hudids[name].bg, "scale", {x=1,y=1}) player:hud_change(hudtable.hudids[name].bg, "scale", {x=1,y=1})
end end
player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max)) player:hud_change(hudtable.hudids[name].text, "text", make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, value, max))
player:hud_change(hudtable.hudids[name].text, "text", tostring(string.format(hudtable.format_string, hudtable.label, value, max))) elseif hb.settings.bar_type == "statbar_modern" then
hudtable.hudstate[name].hidden = false player:hud_change(hudtable.hudids[name].bar, "scale", {x=1,y=1})
end end
player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max))
player:hud_change(hudtable.hudids[name].bar, "item", hb.value_to_barlength(max, max))
hudtable.hudstate[name].hidden = false
return true
end end
function hb.get_hudbar_state(player, identifier) function hb.get_hudbar_state(player, identifier)
if not player_exists(player) then return nil end
local ref = hb.get_hudtable(identifier).hudstate[player:get_player_name()] local ref = hb.get_hudtable(identifier).hudstate[player:get_player_name()]
if not ref then return nil end
-- Do not forget to update this chunk of code in case the state changes -- Do not forget to update this chunk of code in case the state changes
local copy = { local copy = {
hidden = ref.hidden, hidden = ref.hidden,
@ -263,59 +510,99 @@ function hb.get_hudbar_state(player, identifier)
return copy return copy
end end
--register built-in HUD bars function hb.get_hudbar_identifiers()
if minetest.setting_getbool("enable_damage") then local ids = {}
hb.register_hudbar("health", 0xFFFFFF, "Health", { bar = "hudbars_bar_health.png", icon = "hudbars_icon_health.png" }, 20, 20, false) for id, _ in pairs(hb.hudtables) do
hb.register_hudbar("breath", 0xFFFFFF, "Breath", { bar = "hudbars_bar_breath.png", icon = "hudbars_icon_breath.png" }, 10, 10, true) table.insert(ids, id)
end
return ids
end end
--load custom settings --register built-in HUD bars
local set = io.open(minetest.get_modpath("hudbars").."/hudbars.conf", "r") if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then
if set then hb.register_hudbar("health", 0xFFFFFF, S("Health"), { bar = "hudbars_bar_health.png", icon = "hudbars_icon_health.png", bgicon = "hudbars_bgicon_health.png" }, hb.settings.hp_player_maximun, hb.settings.hp_player_maximun, false)
dofile(minetest.get_modpath("hudbars").."/hudbars.conf") hb.register_hudbar("breath", 0xFFFFFF, S("Breath"), { bar = "hudbars_bar_breath.png", icon = "hudbars_icon_breath.png", bgicon = "hudbars_bgicon_breath.png" }, hb.settings.br_player_maximun, hb.settings.br_player_maximun, true)
set:close()
end end
local function hide_builtin(player) local function hide_builtin(player)
player:hud_set_flags({healthbar = false, breathbar = false}) local flags = player:hud_get_flags()
flags.healthbar = false
flags.breathbar = false
player:hud_set_flags(flags)
end end
local function custom_hud(player) local function custom_hud(player)
if minetest.setting_getbool("enable_damage") then if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then
hb.init_hudbar(player, "health", player:get_hp()) local hide
if minetest.settings:get_bool("enable_damage") then
hide = false
else
hide = true
end
local hp = player:get_hp()
local hp_max = hb.settings.hp_player_maximun
hb.init_hudbar(player, "health", math.min(hp, hp_max), hp_max, hide)
local breath = player:get_breath() local breath = player:get_breath()
local breath_max = hb.settings.br_player_maximun
local hide_breath local hide_breath
if breath == 11 then hide_breath = true else hide_breath = false end -- real honoring to configuration of max hp custom heal and breath
hb.init_hudbar(player, "breath", math.min(breath, 10), nil, hide_breath) 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
-- workaround bug https://github.com/minetest/minetest/issues/12350
if breath >= breath_max and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end
hb.init_hudbar(player, "breath", math.min(breath, breath_max), breath_max, hide_breath or hide)
end end
end end
local function update_health(player)
local hp_max = hb.settings.hp_player_maximun
local hp = math.min(player:get_hp(), hp_max)
hb.change_hudbar(player, "health", hp, hp_max)
end
-- update built-in HUD bars -- update built-in HUD bars
local function update_hud(player) local function update_hud(player)
if minetest.setting_getbool("enable_damage") then if not player_exists(player) then return end
if minetest.settings:get_bool("enable_damage") then
if hb.settings.forceload_default_hudbars then
hb.unhide_hudbar(player, "health")
end
--air --air
local breath_max = player:get_properties().breath_max or hb.settings.br_player_maximun
-- workaround bug https://github.com/minetest/minetest/issues/12350
local breath = player:get_breath() local breath = player:get_breath()
if breath == 11 then if breath >= breath_max and hb.settings.autohide_breath == true then
hb.hide_hudbar(player, "breath") hb.hide_hudbar(player, "breath")
else else
hb.unhide_hudbar(player, "breath") hb.unhide_hudbar(player, "breath")
hb.change_hudbar(player, "breath", math.min(breath, 10)) hb.change_hudbar(player, "breath", math.min(breath, breath_max), breath_max)
end end
--health --health
hb.change_hudbar(player, "health", player:get_hp()) update_health(player)
elseif hb.settings.forceload_default_hudbars then
update_health(player)
hb.hide_hudbar(player, "health")
hb.hide_hudbar(player, "breath")
end end
end end
minetest.register_on_player_hpchange(function(player)
if hb.players[player:get_player_name()] ~= nil then
update_health(player)
end
end)
minetest.register_on_respawnplayer(function(player)
update_health(player)
hb.hide_hudbar(player, "breath")
end)
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
minetest.after(0.5, function()
hide_builtin(player) hide_builtin(player)
custom_hud(player) custom_hud(player)
hb.players[player:get_player_name()] = player hb.players[player:get_player_name()] = player
end)
end) end)
minetest.register_on_leaveplayer(function(player) minetest.register_on_leaveplayer(function(player)
@ -324,23 +611,18 @@ end)
local main_timer = 0 local main_timer = 0
local timer = 0 local timer = 0
local timer2 = 0 minetest.register_globalstep(function(dtime)
minetest.after(2.5, function()
minetest.register_globalstep(function(dtime)
main_timer = main_timer + dtime main_timer = main_timer + dtime
timer = timer + dtime timer = timer + dtime
timer2 = timer2 + dtime
if main_timer > hb.settings.tick or timer > 4 then if main_timer > hb.settings.tick or timer > 4 then
if main_timer > hb.settings.tick then main_timer = 0 end if main_timer > hb.settings.tick then main_timer = 0 end
for playername, player in pairs(hb.players) do
-- only proceed if damage is enabled -- only proceed if damage is enabled
if minetest.setting_getbool("enable_damage") then if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then
for _, player in pairs(hb.players) do
-- update all hud elements -- update all hud elements
update_hud(player) update_hud(player)
end end
end end
end end
if timer > 4 then timer = 0 end if timer > 4 then timer = 0 end
end)
end) end)

4
locale/hudbars.de.tr Normal file
View File

@ -0,0 +1,4 @@
# textdomain: hudbars
Health=Leben
Breath=Atem
@1: @2/@3=@1: @2/@3

4
locale/hudbars.es.tr Normal file
View File

@ -0,0 +1,4 @@
# textdomain: hudbars
Health=Salud
Breath=Aliento
@1: @2/@3=@1: @2/@3

6
locale/hudbars.it.tr Normal file
View File

@ -0,0 +1,6 @@
# textdomain: hudbars
Health=Salute
Breath=Ossigeno
# Default format string for progress bar-style HUD bars, e.g. “Health 5/20”
@1: @2/@3=@1: @2/@3

4
locale/hudbars.ms.tr Normal file
View File

@ -0,0 +1,4 @@
# textdomain: hudbars
Health=Kesihatan
Breath=Nafas
@1: @2/@3=@1: @2/@3

6
locale/hudbars.nl.tr Normal file
View File

@ -0,0 +1,6 @@
# textdomain: hudbars
Health=Gezondheid
Breath=Adem
# Default format string for progress bar-style HUD bars, e.g. “Health 5/20”
@1: @2/@3=@1: @2/@3

6
locale/hudbars.pt.tr Normal file
View File

@ -0,0 +1,6 @@
# textdomain: hudbars
Health=Saude
Breath=Folego
# Formato de string padrão para progresso bar-style de barras do HUD, por exemplo “Saude 5/20”
@1: @2/@3=@1: @2/@3

4
locale/hudbars.ru.tr Normal file
View File

@ -0,0 +1,4 @@
# textdomain: hudbars
Health=HP
Breath=дыхание
@1: @2/@3=@1: @2/@3

4
locale/hudbars.tr.tr Normal file
View File

@ -0,0 +1,4 @@
# textdomain: hudbars
Health=Can
Breath=Nefes
@1: @2/@3=@1: @2/@3

6
locale/template.txt Normal file
View File

@ -0,0 +1,6 @@
# textdomain: hudbars
Health=
Breath=
# Default format string for progress bar-style HUD bars, e.g. “Health 5/20”
@1: @2/@3=

2
mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = hudbars
description = HUD mod to display as bars and API for

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

127
settingtypes.txt Normal file
View File

@ -0,0 +1,127 @@
[Appearance]
# Specifies how the value indicators (i.e. health, breah, etc.) look. There are 3 styles
# available. You can choose between the default progress-bar-like bars and the good
# old statbars like you know from vanilla Minetest.
# These values are possible:
# - progress_bar: A horizontal progress-bar-like bar with a label, showing numerical value
# (current, maximum), and an icon. These bars usually convey the most
# information. This is the default and recommended value.
# - statbar_classic: Classic statbar, like in vanilla Minetest. Made out of up to 20
# half-symbols. Those bars represent the vague ratio between
# the current value and the maximum value. 1 half-symbol stands for
# approximately 5% of the maximum value.
# - statbar_modern: Like the classic statbar, but also supports background images, this
# kind of statbar may be considered to be more user-friendly than the
# classic statbar. This bar type closely resembles the mod
# “Better HUD” [hud] by BlockMen.
hudbars_bar_type (HUD bars style) enum progress_bar progress_bar,statbar_classic,statbar_modern
# If enabled (default), the breath indicators in the HUD will be automatically hidden shortly
# after the breath has been filled up. Otherwise, the breath will always be displayed.
hudbars_autohide_breath (Automatically hide breath indicators) bool true
# This setting changes the way the HUD bars are ordered on the display. You can choose
# between a zig-zag pattern (default) or a vertically stacked pattern.
# The following values are allowed:
# - zigzag: Starting from the left bottom, the next is right from the first,
# the next is above the first, the next is right of the third, etc.
# - stack_up: The HUD bars are stacked vertically, going upwards.
# - stack_down: The HUD bars are stacked vertically, going downwards.
hudbars_alignment_pattern (HUD bars alignment pattern) enum zigzag zigzag,stack_up,stack_down
# This setting allows you to specify the order of the HUD bars explicitly. If left empty
# (the default), the health and breath indicators come first, additional indicators
# may appear in any order. This setting is quite technical and normal users probably do not
# need to worry about it.
#
# Syntax:
# The setting has to be specified as a comma-seperated list of key=value pairs, where a key
# refers to the identifier of a HUD bar and the value refers to the slot number of where the
# HUD bar should be placed. The slot number must be an integer greater of equal to 0. Where
# the HUD bars will be displayed exactly depends on the alignment pattern being used.
# All HUD bars to which no order value has been applied will fill in all slots which have
# not been occupied by the HUD bars specified in this setting, the slots will be filled in
# from the lowest slot number.
# Note that the order of those remaining HUD bars is not fixed, it basically just boils
# down on which mod “came” first. Don't worry, the mod will still work perfectly fine, this
# setting is entirely optional.
# The identifier for the health bar is “health” and the identifier for the breath bar is
# “breath”. For other HUD bars, you have to learn it from the mod which is supplying them.
#
# Be careful not to use slot indices twice, or else different HUD bars will be drawn over
# each other!
#
# Example: “breath=0, health=1”
# This makes the breath bar first and the health bar second, which is the opposite order
# of the default one.
hudbars_sorting (HUD bars order) string
[Positions and offsets]
# Horizontal (x) main position of the HUD bars over the entire screen.
# 0.0 is left-most, 1.0 is right-most.
# For the zig-zag alignment pattern, this is for the left HUD bars.
hudbars_pos_left_x (Left HUD bar screen x position) float 0.5 0.0 1.0
# Vertical (y) main position of the HUD bars over the entire screen.
# 0.0 is top, 1.0 is bottom.
# For the zig-zag alignment pattern, this is for the left HUD bars.
hudbars_pos_left_y (Left HUD bar screen y position) float 1.0 0.0 1.0
# Horizontal (x) main position of the right HUD bars over the entire screen.
# 0.0 is left-most, 1.0 is right-most.
# Only used for the zig-zag alignment pattern.
hudbars_pos_right_x (Right HUD bar screen x position) float 0.5 0.0 1.0
# Vertical main position (y) of the right HUD bars over the entire screen.
# 0.0 is top, 1.0 is bottom.
# Only used for the zig-zag alignment pattern.
hudbars_pos_right_y (Right HUD bar screen y position) float 1.0 0.0 1.0
# Precise x offset in pixels from the basic screen x position of the HUD bars.
# For the zig-zag alignment pattern, this is for the left HUD bars.
# This setting is used for the progress bar HUD bar style.
hudbars_start_offset_left_x (Left HUD bar x offset) int -175
# Precise y offset in pixels from the basic screen y position of the HUD bars.
# For the zig-zag alignment pattern, this is for the left HUD bars.
# This setting is used for the progress bar HUD bar style.
hudbars_start_offset_left_y (Left HUD bar y offset) int -86
# Precise x offset in pixels from the basic screen x position of the right HUD bars.
# Only used for the zig-zag alignment pattern.
# This setting is used for the progress bar HUD bar style.
hudbars_start_offset_right_x (Right HUD bar x offset) int 15
# Precise y offset in pixels from the basic screen y position of the right HUD bars.
# Only used for the zig-zag alignment pattern.
# This setting is used for the progress bar HUD bar style.
hudbars_start_offset_right_y (Right HUD bar y offset) int -86
# Precise x offset in pixels from the basic screen x position of the HUD statbars.
# For the zig-zag alignment pattern, this is for the left HUD statbars.
# This setting is used for the classic and modern statbar styles.
hudbars_start_statbar_offset_left_x (Left HUD statbar x offset) int -265
# Precise y offset in pixels from the basic screen y position of the HUD statbars.
# For the zig-zag alignment pattern, this is for the left HUD statbars.
# This setting is used for the classic and modern statbar styles.
hudbars_start_statbar_offset_left_y (Left HUD statbar y offset) int -90
# Precise x offset in pixels from the basic screen x position of the right HUD statbars.
# Only used for the zig-zag alignment pattern.
# This setting is used for the classic and modern statbar styles.
hudbars_start_statbar_offset_right_x (Right HUD statbar x offset) int 25
# Precise y offset in pixels from the basic screen y position of the right HUD statbars.
# Only used for the zig-zag alignment pattern.
# This setting is used for the classic and modern statbar styles.
hudbars_start_statbar_offset_right_y (Right HUD statbar y offset) int -90
# The vertical distance between two HUD bars, in pixels.
hudbars_vmargin (Vertical distance between HUD bars) int 24 0
[Performance]
# The of seconds which need to pass before the server updates the default HUD bars
# (health and breath). Increase this number if you have a slow server or a slow network
# connection and experience performance problems.
hudbars_tick (Default HUD bars update interval) float 0.3 0.0 4.0
[player values defaults]
# set a default value for max hp healt of player, if you customized and need on older engines
hudbars_hp_player_maximun (maximun value of heal of player) int 20
# set a default value for max breath of player, if you customized and need on older engines
hudbars_br_player_maximun (maximun value of braeth of player) int 10

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 172 B