9 Commits

Author SHA1 Message Date
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
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
6 changed files with 87 additions and 31 deletions

View File

@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [Unreleased]
## [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 ## [1.0.1] - 2020-01-01
### Changed ### Changed
@ -17,5 +47,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Initial versioned release. - 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 [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 ## Version compatibility
Gauges is currently primarily tested with Minetest 5.1.0. It may or may not work Gauges currently supports Minetest 5.0 and later, as well as 0.4.17.
with newer or older versions. Issues arising in versions older than 5.0.0 Issues arising in versions older than 5.0 will generally not be fixed.
will generally not be fixed.
## License ## License

View File

@ -3,42 +3,70 @@
-- Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors - MIT License -- Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors - MIT License
-- See `LICENSE.md` included in the source distribution for details. -- See `LICENSE.md` included in the source distribution for details.
if minetest.settings:get_bool("health_bars") == false or local enabled = minetest.settings:get_bool("health_bars") ~= false
not minetest.settings:get_bool("enable_damage") if enabled then
then return end enabled = minetest.settings:get_bool("enable_damage")
end
-- Localize the vector distance function for better performance, as it's called -- Localize this functions for better performance,
-- on every step -- as it's called on every step
local vector_distance = vector.distance local vector_distance = vector.distance
local min = math.min
local max_breath = minetest.PLAYER_MAX_BREATH_DEFAULT or 11
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
minetest.register_entity("gauges:hp_bar", { minetest.register_entity("gauges:hp_bar", {
visual = "sprite", visual = "sprite",
visual_size = {x=1, y=1/16, z=1}, visual_size = {x=1, y=1/16, z=1},
-- The texture is changed later in the code
textures = {"blank.png"}, textures = {"blank.png"},
collisionbox = {0}, collisionbox = {0},
physical = false, physical = false,
on_step = function(self) on_step = function(self)
local player = self.wielder local player = self.wielder
local gauge = self.object
if not player or if not enabled or
not minetest.is_player(player) or not player or not player:is_player() then
vector_distance(player:get_pos(), self.object:get_pos()) > 3 gauge:remove()
then return
self.object:remove() elseif vector_distance(player:get_pos(), gauge:get_pos()) > 3 then
gauge:remove()
add_gauge(player)
return return
end end
local hp = player:get_hp() <= 20 and player:get_hp() or 20 local hp = min(player:get_hp(), 20)
local breath = player:get_breath() <= 10 and player:get_breath() or 11 local breath = min(player:get_breath(), max_breath)
if self.hp ~= hp or self.breath ~= breath then if self.hp ~= hp or self.breath ~= breath then
self.object:set_properties({ local health_t = "health_"..hp..".png"
textures = { local breath_t = "breath_"..breath..".png"
"health_"..tostring(hp)..".png^"..
"breath_"..tostring(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.hp = hp
self.breath = breath self.breath = breath
@ -46,13 +74,8 @@ minetest.register_entity("gauges:hp_bar", {
end end
}) })
local function add_gauge(player) if enabled then
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar") minetest.register_on_joinplayer(function(player)
entity:set_attach(player, "", {x=0, y=19, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
end
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player) minetest.after(1, add_gauge, player)
end) end)
end

View File

@ -1,2 +1,3 @@
name = gauges name = gauges
description = Adds health and breath gauges above players. 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