17 Commits

Author SHA1 Message Date
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
1990169c0a Bump to version 1.0.1 2020-01-01 18:08:11 +01:00
7c3afd699c Localize the vector.distance function for performance 2020-01-01 18:07:06 +01:00
c28b6a9f35 Fix a code style issue 2020-01-01 18:03:08 +01:00
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
29a7dabe8d Add a preview screenshot at the top of the README 2020-01-01 17:53:37 +01:00
c22f195ec0 Add a project changelog 2020-01-01 17:38:24 +01:00
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
b2bb39322a Update copyright statements to 2020 2020-01-01 04:11:04 +01:00
17 changed files with 110 additions and 60 deletions

43
CHANGELOG.md Normal file
View File

@ -0,0 +1,43 @@
# 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]
## [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.3...HEAD
[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.
@ -18,9 +20,7 @@ git clone https://github.com/minetest-mods/gauges.git
You can also
[download a ZIP archive](https://github.com/minetest-mods/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.
of Gauges.
### Enable the mod
@ -60,11 +60,12 @@ on that line.
## Version compatibility
Gauges requires Minetest 5.0.0 or newer to work as expected.
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.

113
init.lua
View File

@ -1,66 +1,71 @@
-- 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},
if minetest.settings:get_bool("health_bars") == false or
not minetest.settings:get_bool("enable_damage")
then return end
-- Localize the vector distance function for better performance,
-- as it's called on every step
local vector_distance = vector.distance
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 and adjust the entity height if needed
-- (The entity height offset was changed in Minetest 5.0.0.)
local version = tonumber(minetest.get_version().string:sub(1, 1))
if version and version < 5 then
height = 9
end
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", {
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,
}
visual_size = {x=1, y=1/16, z=1},
textures = {"blank.png"},
collisionbox = {0},
physical = false,
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
on_step = function(self)
local player = self.wielder
local gauge = self.object
function hp_bar:on_step(dtime)
local wielder = self.wielder and minetest.get_player_by_name(self.wielder)
if 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
if
wielder == nil or
vector.sqdist(wielder:get_pos(), self.object:get_pos()) > 3
then
self.object:remove()
return
local hp = player:get_hp() <= 20 and player:get_hp() or 20
local breath = player:get_breath() <= 10 and player:get_breath() or 11
if self.hp ~= hp or self.breath ~= breath then
gauge:set_properties({
textures = {
"health_"..hp..".png^"..
"breath_"..breath..".png"
}
})
self.hp = hp
self.breath = breath
end
end
})
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 = 19, z = 0}, {x = 0, y = 0, z = 0})
ent = ent:get_luaentity()
ent.wielder = player:get_player_name()
end
end
if
minetest.settings:get_bool("enable_damage") and
minetest.settings:get_bool("health_bars") ~= false
then
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_HP_gauge, player:get_player_name())
end)
end
minetest.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player)
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: 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: 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: 107 B

After

Width:  |  Height:  |  Size: 106 B