22 Commits

Author SHA1 Message Date
0341fe1ef9 Merge branch 'github' 2021-11-09 23:52:28 +01:00
b6cfb91717 Fix crash on math.round field as nil 2021-11-09 23:43:55 +01:00
b7051168f1 Merge remote-tracking branch 'upstream/master' 2021-11-06 09:18:25 +01:00
7c916f93a0 Update changelog with recent additions 2021-11-02 00:31:29 +01:00
b08db516d5 Don't lose hp_bar when teleporting
If a player teleports far away, their hp_bar can become deactivated and disappear. The mod installs the gauge only when a player joins, so it will be forever missing. `static_save = false` prevents the item from deactivating https://github.com/minetest/minetest/blob/master/src/serverenvironment.cpp#L2028 .
Also, it doesn't make sense to save `gauges:hp_bar` to map meta since it's not a standalone item.
2021-11-02 00:20:07 +01:00
3b2552d655 Merge remote-tracking branch 'upstream/master' 2021-11-01 10:29:26 +01:00
8e4faffe8d Make health bars show rough percentage of max hp (#9) 2021-10-18 18:22:03 +02:00
cdbbff71de Merge remote-tracking branch 'upstream/master' 2020-09-28 20:51:20 +02:00
622e31394e Bump to version 1.0.4 2020-09-27 22:56:26 +02:00
04018c504d Remove unused entities on settings change (#8)
Also add Minetest 5.3 support for 10/11 maximal breath.
2020-09-27 19:14:49 +02:00
1d6848bc9c Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-16 21:46:20 +02:00
9b47fc7b4b Declare the minimum supported Minetest version to 0.4.17
This information can be used by ContentDB.
2020-06-03 18:56:14 +02:00
0439216cab Fix the Unreleased comparison link in the changelog 2020-02-15 16:24:29 +01:00
ab7806a4bf Tweak grammar in various files
- Fix release date to match the actual 1.0.3 release.
2020-02-15 16:19:33 +01:00
0f924c177c Bump to version 1.0.3 2020-02-15 16:09:20 +01:00
960ca02e42 Readd Gauges when a player is lost 2020-02-15 16:09:20 +01:00
b075262daf More reliable version checking 2020-02-15 16:09:20 +01:00
9425b8dcf5 Fix entity creating crash and restore 0.4 support 2020-01-19 14:07:23 +01:00
5e76ccfa78 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-01-06 22:24:13 +01:00
e1cae85e42 Merge branch 'master' of yunohost.local:minetest-mods/gauges into nalc-1.2-dev 2019-12-22 13:11:58 +01:00
e1534c2139 Corrige emplacement de la barre gauges
- Place à nouveau la barre au dessus de la tête du joueur.
2019-05-01 18:46:26 +02:00
d5f2404ddd Ajoute message de chargement du mod dans le journal action 2019-05-01 18:37:42 +02:00
7 changed files with 117 additions and 30 deletions

View File

@ -21,6 +21,11 @@ stds.minetest = {
"copy",
},
},
math = {
fields = {
"round",
},
}
}
}

View File

@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased]
### Changed
- [Health and breath bars now adapt to custom maximum values instead of being hardcoded to 20 and 11 respectively.](https://github.com/minetest-mods/gauges/pull/9)
### Fixed
- [The health bar entity is no longer lost when a player teleports.](https://github.com/minetest-mods/gauges/pull/10)
- A side effect is that health bar entities are no longer saved in map metadata.
## [1.0.4] - 2020-09-27
### Added
- Support for Minetest 5.3 and improved Minetest version definitions.
### Changed
- Gauge entities are now removed when the mod is disabled or when the server switches to creative mode.
## [1.0.3] - 2020-02-15
### Fixed
- Fix an issue with gauges occasionally no longer appearing above a player.
### Changed
- Improved the reliability of the Minetest version check (for compatibility with 0.4.17).
## [1.0.2] - 2020-01-16
### Fixed
- Fix crash when creating an entity if a player leaves the server quickly.
### Changed
- Restore Minetest 0.4.17 support. The version check works only with `minetest_game` with the `player_api` mod added in Minetest 5.0.
## [1.0.1] - 2020-01-01
### Changed
@ -17,5 +56,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.1...HEAD
[Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.4...HEAD
[1.0.4]: https://github.com/minetest-mods/gauges/compare/v1.0.3...v1.0.4
[1.0.3]: https://github.com/minetest-mods/gauges/compare/v1.0.2...v1.0.3
[1.0.2]: https://github.com/minetest-mods/gauges/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/minetest-mods/gauges/compare/v1.0.0...v1.0.1

View File

@ -60,9 +60,8 @@ on that line.
## Version compatibility
Gauges is currently primarily tested with Minetest 5.1.0. It may or may not work
with newer or older versions. Issues arising in versions older than 5.0.0
will generally not be fixed.
Gauges currently supports Minetest 5.0 and later, as well as 0.4.17.
Issues arising in versions older than 5.0 will generally not be fixed.
## License

View File

@ -3,42 +3,85 @@
-- Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors - MIT License
-- See `LICENSE.md` included in the source distribution for details.
if minetest.settings:get_bool("health_bars") == false or
not minetest.settings:get_bool("enable_damage")
then return end
local function round(v)
return math.floor(v + 0.5)
end
-- Localize the vector distance function for better performance, as it's called
-- on every step
local enabled = minetest.settings:get_bool("health_bars") ~= false
if enabled then
enabled = minetest.settings:get_bool("enable_damage")
end
-- Localize this functions for better performance,
-- as it's called on every step
local vector_distance = vector.distance
local max = {
breath = 11,
hp = 20,
}
local mt_5 = minetest.features.object_independent_selectionbox
local function add_gauge(player)
if player and player:is_player() then
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
-- Check Minetest version and set required entity heigh
-- (The entity height offset was changed in Minetest 5.0.0)
local height = mt_5 and 19 or 9
entity:set_attach(player, "", {x=0, y=height, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
end
end
-- credit: https://github.com/minetest/minetest/blob/6de8d77e17017cd5cc7b065d42566b6b1cd076cc/builtin/game/statbars.lua#L30-L37
local function scaleToDefault(player, field)
-- Scale "hp" or "breath" to supported amount
local current = player["get_" .. field](player)
local max_display = math.max(player:get_properties()[field .. "_max"], current)
return round(current / max_display * max[field])
end
minetest.register_entity("gauges:hp_bar", {
visual = "sprite",
visual_size = {x=1, y=1/16, z=1},
-- The texture is changed later in the code
textures = {"blank.png"},
collisionbox = {0},
physical = false,
static_save = false,
on_step = function(self)
local player = self.wielder
local gauge = self.object
if not player or
not minetest.is_player(player) or
vector_distance(player:get_pos(), self.object:get_pos()) > 3
then
self.object:remove()
if not enabled or
not player or not player:is_player() then
gauge:remove()
return
elseif vector_distance(player:get_pos(), gauge:get_pos()) > 3 then
gauge:remove()
add_gauge(player)
return
end
local hp = player:get_hp() <= 20 and player:get_hp() or 20
local breath = player:get_breath() <= 10 and player:get_breath() or 11
local hp = scaleToDefault(player, "hp")
local breath = scaleToDefault(player, "breath")
if self.hp ~= hp or self.breath ~= breath then
self.object:set_properties({
textures = {
"health_"..tostring(hp)..".png^"..
"breath_"..tostring(breath)..".png"
}
local health_t = "health_"..hp..".png"
local breath_t = "breath_"..breath..".png"
if hp == 0 then
health_t = "blank.png"
end
if breath == max.breath then
breath_t = "blank.png"
end
gauge:set_properties({
textures = {health_t.."^"..breath_t}
})
self.hp = hp
self.breath = breath
@ -46,13 +89,10 @@ minetest.register_entity("gauges:hp_bar", {
end
})
local function add_gauge(player)
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
entity:set_attach(player, "", {x=0, y=19, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
end
if enabled then
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player)
end)
end
minetest.log("action", "[gauges] loaded.")

View File

@ -1,2 +1,3 @@
name = gauges
description = Adds health and breath gauges above players.
min_minetest_version = 0.4.17

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B