4 Commits

Author SHA1 Message Date
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
9 changed files with 49 additions and 137 deletions

View File

@ -1,20 +0,0 @@
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,11 +21,6 @@ stds.minetest = {
"copy", "copy",
}, },
}, },
math = {
fields = {
"round",
},
}
} }
} }

16
.travis.yml Normal file
View File

@ -0,0 +1,16 @@
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,45 +7,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [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 ## [1.0.1] - 2020-01-01
### Changed ### Changed
@ -56,8 +17,5 @@ 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.4...HEAD [Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.1...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,8 +60,9 @@ on that line.
## Version compatibility ## Version compatibility
Gauges currently supports Minetest 5.0 and later, as well as 0.4.17. Gauges is currently primarily tested with Minetest 5.1.0. It may or may not work
Issues arising in versions older than 5.0 will generally not be fixed. with newer or older versions. Issues arising in versions older than 5.0.0
will generally not be fixed.
## License ## License

View File

@ -3,86 +3,42 @@
-- 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.
local function round(v) if minetest.settings:get_bool("health_bars") == false or
return math.floor(v + 0.5) not minetest.settings:get_bool("enable_damage")
end then return end
local enabled = minetest.settings:get_bool("health_bars") ~= false -- Localize the vector distance function for better performance, as it's called
if enabled then -- on every step
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 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/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", { 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,
static_save = false,
on_step = function(self) on_step = function(self)
local player = self.wielder local player = self.wielder
local gauge = self.object
if not enabled or if not player or
not player or not player:is_player() then not minetest.is_player(player) or
gauge:remove() vector_distance(player:get_pos(), self.object:get_pos()) > 3
return then
elseif vector_distance(player:get_pos(), gauge:get_pos()) > 3 then self.object:remove()
gauge:remove()
add_gauge(player)
return return
end end
local hp = scaleToDefault(player, "hp") local hp = player:get_hp() <= 20 and player:get_hp() or 20
local breath = scaleToDefault(player, "breath") local breath = player:get_breath() <= 10 and player:get_breath() or 11
if self.hp ~= hp or self.breath ~= breath then if self.hp ~= hp or self.breath ~= breath then
local health_t = "health_"..hp..".png" self.object:set_properties({
local breath_t = "breath_"..breath..".png" textures = {
"health_"..tostring(hp)..".png^"..
if hp == 0 then "breath_"..tostring(breath)..".png"
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
@ -90,8 +46,15 @@ minetest.register_entity("gauges:hp_bar", {
end end
}) })
if enabled then 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
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player) minetest.after(1, add_gauge, player)
end) end)
end
minetest.log("action", "[gauges] loaded.")

View File

@ -1,3 +1,2 @@
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

BIN
textures/breath_11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

BIN
textures/health_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B