Compare commits

..

10 Commits

Author SHA1 Message Date
David Leal
478402dda9
Replace Travis CI with GitHub Actions (#12)
Some checks failed
build / luacheck (push) Has been cancelled
2023-08-31 20:50:04 +02:00
sys4-fr
98f346882d
Fix crash on math.round field as nil (#11)
Co-authored-by: sys4 <bricassa@sys4.fr>
2021-11-10 01:20:25 +01:00
Hugo Locurcio
7c916f93a0
Update changelog with recent additions 2021-11-02 00:31:29 +01:00
savilli
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
LoneWolfHT
8e4faffe8d
Make health bars show rough percentage of max hp (#9) 2021-10-18 18:22:03 +02:00
Hugo Locurcio
622e31394e
Bump to version 1.0.4 2020-09-27 22:56:26 +02:00
Maksim
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
Hugo Locurcio
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
Hugo Locurcio
0439216cab
Fix the Unreleased comparison link in the changelog 2020-02-15 16:24:29 +01:00
Hugo Locurcio
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
9 changed files with 103 additions and 45 deletions

20
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: build
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -qqq luarocks
- name: Install LuaCheck and pre-commit
run: |
pip3 install pre-commit
luarocks install --local luacheck
- name: Run LuaCheck with pre-commit
run: |
export PATH="$HOME/.luarocks/bin:$PATH"
pre-commit run --all-files

View File

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

View File

@ -1,16 +0,0 @@
dist: bionic
language: python
python:
- 3.7.1
install:
- sudo apt-get update -qq
- sudo apt-get install -qqq luarocks
- pip3 install pre-commit
- luarocks install --local luacheck
script:
# All linters are run with pre-commit hooks
- export PATH="$HOME/.luarocks/bin:$PATH"
- pre-commit run --all-files

View File

@ -7,15 +7,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased]
## [1.0.3] - 2020-01-21
### 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
- Fix the problem when the Gauges lost the player
- [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
- Now the Minetest version is checked using `minetest.get_version()`. It is very reliable.
- 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
@ -37,7 +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
[1.0.1]: https://github.com/minetest-mods/gauges/compare/v1.0.0...v1.0.1
[1.0.2]: https://github.com/minetest-mods/gauges/compare/v1.0.1...v1.0.2
[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 support Minetest 5.0+ and 0.4.17+. This does not work with older versions.
Issues arising in versions older than 5.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,61 @@
-- 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,
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")
local height = 19
-- check for Minetest 0.4.17
local version = tonumber(minetest.get_version().string:sub(1, 1))
if version and version < 5 then
height = 9
end
-- 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/master/builtin/game/statbars.lua#L31-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},
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 player:is_player() then
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
@ -47,15 +66,23 @@ minetest.register_entity("gauges:hp_bar", {
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
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_"..hp..".png^"..
"breath_"..breath..".png"
}
textures = {health_t.."^"..breath_t}
})
self.hp = hp
self.breath = breath
@ -63,6 +90,8 @@ minetest.register_entity("gauges:hp_bar", {
end
})
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player)
end)
if enabled then
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player)
end)
end

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