mirror of
				https://repo.or.cz/minetest_hudbars.git
				synced 2025-10-30 23:25:39 +01:00 
			
		
		
		
	Compare commits
	
		
			114 Commits
		
	
	
		
			1.0.0
			...
			28dcf8af65
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 28dcf8af65 | |||
|  | a250d2a350 | ||
|  | 7993feac07 | ||
|  | b19b5f090a | ||
|  | 9a8a3f0f8c | ||
|  | 2eb2df946b | ||
| c4ddef312e | |||
|  | 2ffcd94dd6 | ||
|  | 8d3fa950f8 | ||
|  | 332aa18452 | ||
| 7f6ed309b3 | |||
|  | 99ebd71da7 | ||
|  | 699e356609 | ||
|  | 8c80745ecb | ||
|  | 1e3def3cfa | ||
|  | 48d9fd6a12 | ||
| 7cd5940c68 | |||
|  | 085a2aa901 | ||
|  | 14a535de0d | ||
|  | afb0242b3b | ||
|  | 915fab08e2 | ||
|  | 895fcae716 | ||
|  | 07b9f766d2 | ||
|  | a3fede159b | ||
|  | 5710667766 | ||
|  | 1568d1f418 | ||
|  | 8b577c7424 | ||
|  | 8d2d2d6070 | ||
|  | 94b9c545da | ||
|  | 67ca481f7c | ||
|  | ba21f47489 | ||
|  | 90688e4d45 | ||
|  | bec8afed8b | ||
|  | b5e84b2b50 | ||
|  | 99cdbddc64 | ||
|  | ec238287cb | ||
|  | 1e522e2896 | ||
|  | aa5fef1298 | ||
|  | f19a85c537 | ||
|  | 9145f492e8 | ||
|  | 5e06b35e79 | ||
|  | e09eb8ab4f | ||
|  | bd0641af52 | ||
|  | f273a9e1f3 | ||
|  | e4c8510282 | ||
|  | e5989f4c0d | ||
|  | cfebd5138d | ||
|  | fa82d2df1c | ||
|  | ea58a71e17 | ||
|  | e11a52d8fb | ||
|  | 7cf82b4e2f | ||
|  | d3e51926bc | ||
|  | 5c0f165ddf | ||
|  | 3c182884dc | ||
|  | 3d74745aec | ||
|  | 05f5ec0622 | ||
|  | d099ae91e2 | ||
|  | 48045ec7f0 | ||
|  | 92d8c786a9 | ||
|  | 6c0c617b39 | ||
|  | 893ba4e577 | ||
|  | 27336cee7d | ||
|  | ac2085d0f0 | ||
|  | aed5c70c8a | ||
|  | 4931aff43f | ||
|  | afad4e847d | ||
|  | 008388036c | ||
|  | 43931527c4 | ||
|  | 9a78ce745f | ||
|  | 5348d26a2e | ||
|  | 40b7c35a7d | ||
|  | 6d850edf96 | ||
|  | 3b57b2cd4a | ||
|  | d64dcb83b5 | ||
|  | 1786ae2cab | ||
|  | f06e3c362f | ||
|  | c26dd7d6a4 | ||
|  | 9af3f328fc | ||
|  | fff42e2a42 | ||
|  | 1916c220b7 | ||
|  | 41cdf147fa | ||
|  | 003c6214ed | ||
|  | c25c2d1b6e | ||
|  | 5bff4d453c | ||
|  | 21651fcbe8 | ||
|  | 0d022110eb | ||
|  | 185f0f5b2f | ||
|  | 5741b7203c | ||
|  | 44a1313d2f | ||
|  | 3362152656 | ||
|  | 2a19edbc5f | ||
|  | 39c1fcfe2f | ||
|  | 9752ddedf6 | ||
|  | fb2cf988de | ||
|  | 390c24c193 | ||
|  | 9db2fcba34 | ||
|  | 2a35745ec9 | ||
|  | 8d2321d647 | ||
|  | 9d76643388 | ||
|  | 4ac3b25539 | ||
|  | 897d40e47b | ||
|  | b68af069a4 | ||
|  | fc66c4f0a5 | ||
|  | f2efdea814 | ||
|  | 012623b235 | ||
|  | 015e23c6f2 | ||
|  | 2691a4e320 | ||
|  | e5d1e21a41 | ||
|  | c5654808ca | ||
|  | cfe8b3a60b | ||
|  | 25b59646c2 | ||
|  | 5c5b516834 | ||
|  | ef30c34609 | ||
|  | 4ebc24f2ed | 
							
								
								
									
										87
									
								
								API.md
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								API.md
									
									
									
									
									
								
							| @@ -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` | ||||||
|  |  * `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,11 +180,11 @@ 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. | ||||||
| @@ -162,12 +194,17 @@ Returns the current state of the active player's HUD bar. | |||||||
| * `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. | ||||||
|   | |||||||
							
								
								
									
										61
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | # HUD bars | ||||||
|  |  | ||||||
|  | ## Description | ||||||
|  | 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. | ||||||
|  |  | ||||||
|  | **Important**: Keep in mind if running a server with this mod, that the custom | ||||||
|  | position should be displayed correctly on every screen size. | ||||||
|  |  | ||||||
|  | ## Current version | ||||||
|  | The current version is 2.2.2. | ||||||
|  |  | ||||||
|  | This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer | ||||||
|  | standard. | ||||||
|  |  | ||||||
|  | ## 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. | ||||||
|  |  | ||||||
|  | ## 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`. | ||||||
|  |  | ||||||
|  | ## 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) | ||||||
							
								
								
									
										48
									
								
								README.txt
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								README.txt
									
									
									
									
									
								
							| @@ -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. |  | ||||||
| @@ -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 |  | ||||||
							
								
								
									
										48
									
								
								default_settings.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								default_settings.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | -- (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 | ||||||
| @@ -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 } |  | ||||||
|  |  | ||||||
							
								
								
									
										447
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										447
									
								
								init.lua
									
									
									
									
									
								
							| @@ -1,3 +1,6 @@ | |||||||
|  | local S = minetest.get_translator("hudbars") | ||||||
|  | local N = function(s) return s end | ||||||
|  |  | ||||||
| hb = {} | hb = {} | ||||||
|  |  | ||||||
| hb.hudtables = {} | hb.hudtables = {} | ||||||
| @@ -5,25 +8,96 @@ 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 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 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) | ||||||
|  | hb.players = {} | ||||||
|  |  | ||||||
| function hb.value_to_barlength(value, max) | 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 | ||||||
|  |  | ||||||
| @@ -31,24 +105,67 @@ 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) | ||||||
|  | 	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 | 	else | ||||||
| 		pos = hb.settings.pos_right | 		if index % 2 == 0 then | ||||||
| 		offset = { | 			pos = hb.settings.pos_left | ||||||
| 			x = hb.settings.start_offset_right.x, | 			offset = { | ||||||
| 			y = hb.settings.start_offset_right.y - hb.settings.vmargin * math.floor((hb.hudbars_count-1)/2) | 				x = hb.settings.start_offset_left.x, | ||||||
| 		} | 				y = hb.settings.start_offset_left.y - hb.settings.vmargin * (index/2) | ||||||
|  | 			} | ||||||
|  | 		else | ||||||
|  | 			pos = hb.settings.pos_right | ||||||
|  | 			offset = { | ||||||
|  | 				x = hb.settings.start_offset_right.x, | ||||||
|  | 				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 = "%d" | ||||||
|  | 	end | ||||||
|  | 	if format_string_config.format_max_value == nil then | ||||||
|  | 		format_string_config.format_max_value = "%d" | ||||||
| 	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) | ||||||
| @@ -58,7 +175,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 | ||||||
| @@ -67,47 +184,87 @@ 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 | ||||||
| 		ids.bg = player:hud_add({ | 		if hb.settings.bar_type == "progress_bar" then | ||||||
| 			hud_elem_type = "image", | 			ids.bg = player:hud_add({ | ||||||
| 			position = pos, |  | ||||||
| 			scale = bgscale, |  | ||||||
| 			text = "hudbars_bar_background.png", |  | ||||||
| 			alignment = {x=1,y=1}, |  | ||||||
| 			offset = { x = offset.x - 1, y = offset.y - 1 }, |  | ||||||
| 		}) |  | ||||||
| 		if textures.icon ~= nil then |  | ||||||
| 			ids.icon = player:hud_add({ |  | ||||||
| 				hud_elem_type = "image", | 				hud_elem_type = "image", | ||||||
| 				position = pos, | 				position = pos, | ||||||
| 				scale = iconscale, | 				scale = bgscale, | ||||||
| 				text = textures.icon, | 				text = "hudbars_bar_background.png", | ||||||
| 				alignment = {x=-1,y=1}, | 				alignment = {x=1,y=1}, | ||||||
| 				offset = { x = offset.x - 3, y = offset.y }, | 				offset = { x = offset.x - 1, y = offset.y - 1 }, | ||||||
|  | 				z_index = 0, | ||||||
| 			}) | 			}) | ||||||
|  | 			if textures.icon ~= nil then | ||||||
|  | 				ids.icon = player:hud_add({ | ||||||
|  | 					hud_elem_type = "image", | ||||||
|  | 					position = pos, | ||||||
|  | 					scale = iconscale, | ||||||
|  | 					text = textures.icon, | ||||||
|  | 					alignment = {x=-1,y=1}, | ||||||
|  | 					offset = { x = offset.x - 3, y = offset.y }, | ||||||
|  | 					z_index = 1, | ||||||
|  | 				}) | ||||||
|  | 			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, 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 | ||||||
|  | 			bar_size = {x=24, y=24} | ||||||
| 		end | 		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, | ||||||
| 			number = barnumber, | 			number = barnumber, | ||||||
| 			alignment = {x=-1,y=-1}, | 			alignment = {x=-1,y=-1}, | ||||||
| 			offset = offset, | 			offset = offset, | ||||||
| 		}) |  | ||||||
| 		ids.text = player:hud_add({ |  | ||||||
| 			hud_elem_type = "text", |  | ||||||
| 			position = pos, |  | ||||||
| 			text = text, |  | ||||||
| 			alignment = {x=1,y=1}, |  | ||||||
| 			number = text_color, |  | ||||||
| 			direction = 0, | 			direction = 0, | ||||||
| 			offset = { x = offset.x + 2,  y = offset.y }, | 			size = bar_size, | ||||||
|  | 			z_index = 1, | ||||||
| 		}) | 		}) | ||||||
|  | 		if hb.settings.bar_type == "progress_bar" then | ||||||
|  | 			ids.text = player:hud_add({ | ||||||
|  | 				hud_elem_type = "text", | ||||||
|  | 				position = pos, | ||||||
|  | 				text = text, | ||||||
|  | 				alignment = {x=1,y=1}, | ||||||
|  | 				number = text_color, | ||||||
|  | 				direction = 0, | ||||||
|  | 				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 | ||||||
| @@ -134,6 +291,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 = {} | ||||||
| @@ -147,17 +305,25 @@ 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) | ||||||
|  | 	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 | ||||||
| @@ -177,6 +343,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 | ||||||
| @@ -190,7 +383,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 | ||||||
| @@ -205,49 +398,62 @@ 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 | ||||||
| 			if new_text ~= hudtable.hudstate[name].text then | 				local new_text = make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, new_value, new_max_value) | ||||||
| 				player:hud_change(hudtable.hudids[name].text, "text", new_text) | 				if new_text ~= hudtable.hudstate[name].text then | ||||||
| 				hudtable.hudstate[name].text = new_text | 					player:hud_change(hudtable.hudids[name].text, "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 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 | 	elseif hb.settings.bar_type == "statbar_modern" then | ||||||
|  | 		player:hud_change(hudtable.hudids[name].bg, "number", 0) | ||||||
| 	end | 	end | ||||||
|  | 	player:hud_change(hudtable.hudids[name].bar, "number", 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() | 	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].bg, "number", hb.settings.statbar_length) | ||||||
| 	end | 	end | ||||||
|  | 	player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, 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()] | ||||||
| 	-- 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 = { | ||||||
| @@ -260,79 +466,114 @@ 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" }, 20, 20, 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" }, 10, 10, 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 = player:get_properties().hp_max | ||||||
|  | 		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 = player:get_properties().breath_max | ||||||
| 		local hide_breath | 		local hide_breath | ||||||
| 		if breath == 11 then hide_breath = true else hide_breath = false end | 		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, 10), nil, hide_breath) | 		hb.init_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1, hide_breath or hide) | ||||||
| 	end | 	end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | local function update_health(player) | ||||||
|  | 	local hp_max = player:get_properties().hp_max | ||||||
|  | 	hb.change_hudbar(player, "health", player:get_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 air = player:get_breath() | 		local breath_max = player:get_properties().breath_max | ||||||
|  | 		local breath = player:get_breath() | ||||||
| 		 | 		 | ||||||
| 		if air == 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", air) | 			hb.change_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1) | ||||||
| 		end | 		end | ||||||
| 		 |  | ||||||
| 		--health | 		--health | ||||||
| 		hb.change_hudbar(player, "health", player:get_hp()) | 		update_health(player) | ||||||
|  | 	elseif hb.settings.forceload_default_hudbars then | ||||||
|  | 		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 | ||||||
| 	end) | end) | ||||||
|  |  | ||||||
|  | minetest.register_on_leaveplayer(function(player) | ||||||
|  | 	hb.players[player:get_player_name()] = nil | ||||||
| end) | 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() | 	main_timer = main_timer + dtime | ||||||
| 	minetest.register_globalstep(function(dtime) | 	timer = timer + dtime | ||||||
| 	 main_timer = main_timer + dtime | 	if main_timer > hb.settings.tick or timer > 4 then | ||||||
| 	 timer = timer + dtime | 		if main_timer > hb.settings.tick then main_timer = 0 end | ||||||
| 	 timer2 = timer2 + dtime | 		-- only proceed if damage is enabled | ||||||
| 		if main_timer > hb.settings.tick or timer > 4 then | 		if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then | ||||||
| 		 if main_timer > hb.settings.tick then main_timer = 0 end | 			for _, player in pairs(hb.players) do | ||||||
| 		 for _,player in ipairs(minetest.get_connected_players()) do | 				-- update all hud elements | ||||||
| 			-- only proceed if damage is enabled | 				update_hud(player) | ||||||
| 			if minetest.setting_getbool("enable_damage") then |  | ||||||
| 			 -- update all hud elements |  | ||||||
| 			 update_hud(player) |  | ||||||
| 			end | 			end | ||||||
| 		 end |  | ||||||
| 		 |  | ||||||
| 		end | 		end | ||||||
| 		if timer > 4 then timer = 0 end | 	end | ||||||
| 	end) | 	if timer > 4 then timer = 0 end | ||||||
| end) | end) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[hudbars] loaded.") | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								locale/hudbars.de.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								locale/hudbars.de.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | # textdomain: hudbars | ||||||
|  | Health=Leben | ||||||
|  | Breath=Atem | ||||||
|  | @1: @2/@3=@1: @2/@3 | ||||||
							
								
								
									
										4
									
								
								locale/hudbars.es.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								locale/hudbars.es.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | # textdomain: hudbars | ||||||
|  | Health=Salud | ||||||
|  | Breath=Aliento | ||||||
|  | @1: @2/@3=@1: @2/@3 | ||||||
							
								
								
									
										6
									
								
								locale/hudbars.it.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/hudbars.it.tr
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										4
									
								
								locale/hudbars.ms.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | # textdomain: hudbars | ||||||
|  | Health=Kesihatan | ||||||
|  | Breath=Nafas | ||||||
|  | @1: @2/@3=@1: @2/@3 | ||||||
							
								
								
									
										6
									
								
								locale/hudbars.nl.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/hudbars.nl.tr
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										6
									
								
								locale/hudbars.pt.tr
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										4
									
								
								locale/hudbars.ru.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | # textdomain: hudbars | ||||||
|  | Health=HP | ||||||
|  | Breath=дыхание | ||||||
|  | @1: @2/@3=@1: @2/@3 | ||||||
							
								
								
									
										4
									
								
								locale/hudbars.tr.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								locale/hudbars.tr.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | # textdomain: hudbars | ||||||
|  | Health=Can | ||||||
|  | Breath=Nefes | ||||||
|  | @1: @2/@3=@1: @2/@3 | ||||||
							
								
								
									
										6
									
								
								locale/template.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								locale/template.txt
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										2
									
								
								mod.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | name = hudbars | ||||||
|  | description = Replaces the health and breath symbols in the HUD by “progress bars” and shows exact values. Other mods can add more progress bars for custom player stats. | ||||||
							
								
								
									
										
											BIN
										
									
								
								screenshot.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								screenshot.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.3 KiB | 
							
								
								
									
										119
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | |||||||
|  | [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.1 0.0 4.0 | ||||||
							
								
								
									
										
											BIN
										
									
								
								textures/hudbars_bgicon_breath.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								textures/hudbars_bgicon_breath.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 811 B | 
							
								
								
									
										
											BIN
										
									
								
								textures/hudbars_bgicon_health.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								textures/hudbars_bgicon_health.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 302 B | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 818 B | 
		Reference in New Issue
	
	Block a user