8 Commits

Author SHA1 Message Date
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
6cd5e97542 5.x compatibility, drop 0.4.x support (#2) 2019-10-13 19:47:56 +02:00
ab2d7c83be Use mod.conf for name and description (#1) 2019-09-28 20:14:56 +02:00
4718559b01 Update pre-commit hooks to 2.3.0 2019-09-25 23:19:13 +02:00
af5d69957d Update URLs in the README to reflect the move to minetest-mods 2019-09-08 22:04:47 +02:00
766d9f2c10 Travis CI: Use the bionic distribution 2019-07-29 00:52:08 +02:00
19 changed files with 73 additions and 67 deletions

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

14
CHANGELOG.md Normal file
View File

@ -0,0 +1,14 @@
# 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.0 - 2020-01-01
- Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.0...HEAD

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

@ -13,11 +13,11 @@ 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)
[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.
@ -60,13 +60,13 @@ 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 is currently primarily tested with Minetest 5.1.0. It may or may not work
with newer or older versions. Issues arising in versions older than 5.0.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.

View File

@ -1,64 +1,54 @@
-- 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
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},
-- The texture is changed later in the code
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
function hp_bar:on_step(dtime)
local wielder = self.wielder and minetest.get_player_by_name(self.wielder)
if not player or
not minetest.is_player(player) or
vector.distance(player:get_pos(), self.object:get_pos()) > 3
then
self.object:remove()
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
self.object:set_properties({
textures = {
"health_"..tostring(hp)..".png^"..
"breath_"..tostring(breath)..".png"
}
})
self.hp = hp
self.breath = breath
end
end
})
local hp = wielder:get_hp()
local breath = wielder:get_breath()
local function add_gauge(player)
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
self.object:set_properties({
textures = {
"health_" .. tostring(hp) .. ".png^breath_" .. tostring(breath) .. ".png",
},
})
entity:set_attach(player, "", {x=0, y=19, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player
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 = 10, 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)

2
mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = gauges
description = Adds health and breath gauges above players.

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