Compare commits

...

33 Commits

Author SHA1 Message Date
bri cassa 0341fe1ef9 Merge branch 'github' 2021-11-09 23:52:28 +01:00
bri cassa b6cfb91717 Fix crash on math.round field as nil 2021-11-09 23:43:55 +01:00
bri cassa b7051168f1 Merge remote-tracking branch 'upstream/master' 2021-11-06 09:18: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
bri cassa 3b2552d655 Merge remote-tracking branch 'upstream/master' 2021-11-01 10:29:26 +01:00
LoneWolfHT 8e4faffe8d
Make health bars show rough percentage of max hp (#9) 2021-10-18 18:22:03 +02:00
Sys Quatre cdbbff71de Merge remote-tracking branch 'upstream/master' 2020-09-28 20:51:20 +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
Sys Quatre 1d6848bc9c Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-16 21:46:20 +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
MoNTE48 0f924c177c Bump to version 1.0.3 2020-02-15 16:09:20 +01:00
MoNTE48 960ca02e42 Readd Gauges when a player is lost 2020-02-15 16:09:20 +01:00
MoNTE48 b075262daf More reliable version checking 2020-02-15 16:09:20 +01:00
Maksim 9425b8dcf5 Fix entity creating crash and restore 0.4 support 2020-01-19 14:07:23 +01:00
Sys Quatre 5e76ccfa78 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-01-06 22:24:13 +01:00
Hugo Locurcio 1990169c0a
Bump to version 1.0.1 2020-01-01 18:08:11 +01:00
Hugo Locurcio 7c3afd699c
Localize the `vector.distance` function for performance 2020-01-01 18:07:06 +01:00
Hugo Locurcio c28b6a9f35
Fix a code style issue 2020-01-01 18:03:08 +01:00
Hugo Locurcio f7be847de4
Remove obsolete notice about renaming the extracted mod folder
This is no longer required thanks to `mod.conf`.
2020-01-01 17:54:45 +01:00
Hugo Locurcio 29a7dabe8d
Add a preview screenshot at the top of the README 2020-01-01 17:53:37 +01:00
Hugo Locurcio c22f195ec0
Add a project changelog 2020-01-01 17:38:24 +01:00
Maksim f9471512bd
Optimize the mod code
This also improves formatting to comply with Minetest's
Lua code style guidelines.
2020-01-01 17:29:16 +01:00
Hugo Locurcio b2bb39322a
Update copyright statements to 2020 2020-01-01 04:11:04 +01:00
Sys Quatre e1cae85e42 Merge branch 'master' of yunohost.local:minetest-mods/gauges into nalc-1.2-dev 2019-12-22 13:11:58 +01:00
SmallJoker 6cd5e97542
5.x compatibility, drop 0.4.x support (#2) 2019-10-13 19:47:56 +02:00
David Leal ab2d7c83be Use mod.conf for name and description (#1) 2019-09-28 20:14:56 +02:00
Hugo Locurcio 4718559b01
Update pre-commit hooks to 2.3.0 2019-09-25 23:19:13 +02:00
Hugo Locurcio af5d69957d
Update URLs in the README to reflect the move to minetest-mods 2019-09-08 22:04:47 +02:00
Hugo Locurcio 766d9f2c10
Travis CI: Use the `bionic` distribution 2019-07-29 00:52:08 +02:00
22 changed files with 170 additions and 68 deletions

View File

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

View File

@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.1.0
rev: v2.3.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace

View File

@ -1,16 +1,16 @@
language: generic
dist: bionic
language: python
addons:
apt:
packages:
- luarocks
python:
- 3.7.1
install:
- pyenv global 3.6.3
- pip3 install --user pre-commit
- 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"
- $HOME/.local/bin/pre-commit run --all-files
- pre-commit run --all-files

63
CHANGELOG.md Normal file
View File

@ -0,0 +1,63 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [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
- Improve performance by localizing the `vector.distance()` function.
## 1.0.0 - 2020-01-01
- Initial versioned release.
[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

@ -1,6 +1,6 @@
# MIT License
Copyright © 2014-2019 4aiman, Hugo Locurcio and contributors
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,5 +1,7 @@
# Gauges
![Preview](https://content.minetest.net/uploads/GBoKauWSou.png)
Gauges for [Minetest](https://www.minetest.net/), a free and open source infinite
world block sandbox game.
@ -13,14 +15,12 @@ To install Gauges, clone this Git repository into your Minetest's `mods/`
directory:
```bash
git clone https://github.com/Calinou/gauges.git
git clone https://github.com/minetest-mods/gauges.git
```
You can also
[download a ZIP archive](https://github.com/Calinou/gauges/archive/master.zip)
of Gauges. If you do so, you will need to extract the archive then rename
the resulting folder from `gauges-master` to `gauges` this is
**absolutely** required, as the mod won't work otherwise.
[download a ZIP archive](https://github.com/minetest-mods/gauges/archive/master.zip)
of Gauges.
### Enable the mod
@ -60,13 +60,12 @@ on that line.
## Version compatibility
Gauges is currently primarily tested with Minetest 0.4.17.
It may or may not work with newer or older versions. Issues arising in older
versions than 0.4.17 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
Copyright © 2014-2019 4aiman, Hugo Locurcio and contributors
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors
- Code is licensed under the MIT license, see
[`LICENSE.md`](LICENSE.md) for details.

130
init.lua
View File

@ -1,65 +1,97 @@
-- gauges: Adds health/breath bars above players
--
-- Copyright © 2014-2019 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.
local hp_bar = {
physical = false,
collisionbox = {x = 0, y = 0, z = 0},
visual = "sprite",
textures = {"20.png"}, -- The texture is changed later in the code
visual_size = {x = 1.5, y = 0.09375, z = 1.5}, -- Y value is (1 / 16) * 1.5
wielder = nil,
local function round(v)
return math.floor(v + 0.5)
end
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,
}
function vector.sqdist(a, b)
local dx = a.x - b.x
local dy = a.y - b.y
local dz = a.z - b.z
return dx * dx + dy * dy + dz * dz
end
local mt_5 = minetest.features.object_independent_selectionbox
function hp_bar:on_step(dtime)
local wielder = self.wielder and minetest.get_player_by_name(self.wielder)
local function add_gauge(player)
if player and player:is_player() then
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
if
wielder == nil or
vector.sqdist(wielder:get_pos(), self.object:get_pos()) > 3
then
self.object:remove()
return
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
local hp = wielder:get_hp()
local breath = wielder:get_breath()
self.object:set_properties({
textures = {
"health_" .. tostring(hp) .. ".png^breath_" .. tostring(breath) .. ".png",
},
})
end
minetest.register_entity("gauges:hp_bar", hp_bar)
local function add_HP_gauge(name)
local player = minetest.get_player_by_name(name)
local pos = player:get_pos()
local ent = minetest.add_entity(pos, "gauges:hp_bar")
if ent ~= nil then
ent:set_attach(player, "", {x = 0, y = 18, z = 0}, {x = 0, y = 0, z = 0})
ent = ent:get_luaentity()
ent.wielder = player:get_player_name()
entity:set_attach(player, "", {x=0, y=height, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
end
end
if
minetest.settings:get_bool("enable_damage") and
minetest.settings:get_bool("health_bars") ~= false
then
-- 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},
textures = {"blank.png"},
collisionbox = {0},
physical = false,
static_save = false,
on_step = function(self)
local player = self.wielder
local gauge = self.object
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 = 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_t.."^"..breath_t}
})
self.hp = hp
self.breath = breath
end
end
})
if enabled then
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_HP_gauge, player:get_player_name())
minetest.after(1, add_gauge, player)
end)
end

3
mod.conf Normal file
View File

@ -0,0 +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: 131 B

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

After

Width:  |  Height:  |  Size: 106 B