3 Commits

Author SHA1 Message Date
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
19 changed files with 59 additions and 130 deletions

View File

@ -1,54 +0,0 @@
# 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.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 # MIT License
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors Copyright © 2014-2019 4aiman, Hugo Locurcio and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,5 @@
# Gauges # Gauges
![Preview](https://content.minetest.net/uploads/GBoKauWSou.png)
Gauges for [Minetest](https://www.minetest.net/), a free and open source infinite Gauges for [Minetest](https://www.minetest.net/), a free and open source infinite
world block sandbox game. world block sandbox game.
@ -20,7 +18,9 @@ git clone https://github.com/minetest-mods/gauges.git
You can also You can also
[download a ZIP archive](https://github.com/minetest-mods/gauges/archive/master.zip) [download a ZIP archive](https://github.com/minetest-mods/gauges/archive/master.zip)
of Gauges. 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.
### Enable the mod ### Enable the mod
@ -60,12 +60,11 @@ on that line.
## Version compatibility ## Version compatibility
Gauges currently supports Minetest 5.0 and later, as well as 0.4.17. Gauges requires Minetest 5.0.0 or newer to work as expected.
Issues arising in versions older than 5.0 will generally not be fixed.
## License ## License
Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors Copyright © 2014-2019 4aiman, Hugo Locurcio and contributors
- Code is licensed under the MIT license, see - Code is licensed under the MIT license, see
[`LICENSE.md`](LICENSE.md) for details. [`LICENSE.md`](LICENSE.md) for details.

115
init.lua
View File

@ -1,81 +1,66 @@
-- gauges: Adds health/breath bars above players -- gauges: Adds health/breath bars above players
-- --
-- Copyright © 2014-2020 4aiman, Hugo Locurcio and contributors - MIT License -- Copyright © 2014-2019 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 enabled = minetest.settings:get_bool("health_bars") ~= false local hp_bar = {
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 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", {
visual = "sprite",
visual_size = {x=1, y=1/16, z=1},
textures = {"blank.png"},
collisionbox = {0},
physical = false, 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,
}
on_step = function(self) function vector.sqdist(a, b)
local player = self.wielder local dx = a.x - b.x
local gauge = self.object local dy = a.y - b.y
local dz = a.z - b.z
return dx * dx + dy * dy + dz * dz
end
if not enabled or function hp_bar:on_step(dtime)
not player or not player:is_player() then local wielder = self.wielder and minetest.get_player_by_name(self.wielder)
gauge:remove()
return if
elseif vector_distance(player:get_pos(), gauge:get_pos()) > 3 then wielder == nil or
gauge:remove() vector.sqdist(wielder:get_pos(), self.object:get_pos()) > 3
add_gauge(player) then
self.object:remove()
return return
end end
local hp = min(player:get_hp(), 20) local hp = wielder:get_hp()
local breath = min(player:get_breath(), max_breath) local breath = wielder:get_breath()
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 end
self.breath = breath
end
end
})
if enabled then 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.register_on_joinplayer(function(player)
minetest.after(1, add_gauge, player) minetest.after(1, add_HP_gauge, player:get_player_name())
end) 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

After

Width:  |  Height:  |  Size: 170 B

BIN
textures/breath_11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

After

Width:  |  Height:  |  Size: 151 B

BIN
textures/breath_65535.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 130 B

BIN
textures/health_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

After

Width:  |  Height:  |  Size: 107 B