6 Commits

Author SHA1 Message Date
9425b8dcf5 Fix entity creating crash and restore 0.4 support 2020-01-19 14:07:23 +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
3 changed files with 38 additions and 12 deletions

View File

@ -7,8 +7,25 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [Unreleased]
## [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 ## 1.0.0 - 2020-01-01
- Initial versioned release. - Initial versioned release.
[Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.0...HEAD [Unreleased]: https://github.com/minetest-mods/gauges/compare/v1.0.1...HEAD
[1.0.1]: https://github.com/minetest-mods/gauges/compare/v1.0.0...v1.0.1

View File

@ -1,5 +1,7 @@
# 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.
@ -18,9 +20,7 @@ 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. If you do so, you will need to extract the archive then rename of Gauges.
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,7 +60,7 @@ on that line.
## Version compatibility ## Version compatibility
Gauges is currently primarily tested with Minetest 5.1.0. It may or may not work Gauges is currently primarily tested with Minetest 5.1.0 and 0.4.17. It may or may not work
with newer or older versions. Issues arising in versions older than 5.0.0 with newer or older versions. Issues arising in versions older than 5.0.0
will generally not be fixed. will generally not be fixed.

View File

@ -7,9 +7,13 @@ if minetest.settings:get_bool("health_bars") == false or
not minetest.settings:get_bool("enable_damage") not minetest.settings:get_bool("enable_damage")
then return end then return end
-- Localize the vector distance function for better performance, as it's called
-- on every step
local vector_distance = vector.distance
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 -- The texture is changed later in the code
textures = {"blank.png"}, textures = {"blank.png"},
collisionbox = {0}, collisionbox = {0},
@ -17,12 +21,13 @@ minetest.register_entity("gauges:hp_bar", {
on_step = function(self) on_step = function(self)
local player = self.wielder local player = self.wielder
local gauge = self.object
if not player or if not player or
not minetest.is_player(player) or not minetest.is_player(player) or
vector.distance(player:get_pos(), self.object:get_pos()) > 3 vector_distance(player:get_pos(), gauge:get_pos()) > 3
then then
self.object:remove() gauge:remove()
return return
end end
@ -30,7 +35,7 @@ minetest.register_entity("gauges:hp_bar", {
local breath = player:get_breath() <= 10 and player:get_breath() or 11 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
self.object:set_properties({ gauge:set_properties({
textures = { textures = {
"health_"..tostring(hp)..".png^".. "health_"..tostring(hp)..".png^"..
"breath_"..tostring(breath)..".png" "breath_"..tostring(breath)..".png"
@ -43,10 +48,14 @@ minetest.register_entity("gauges:hp_bar", {
}) })
local function add_gauge(player) local function add_gauge(player)
if player and minetest.is_player(player) then
local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar") local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar")
-- check for minetest_game 0.4.*
local height = minetest.get_modpath("player_api") and 19 or 9
entity:set_attach(player, "", {x=0, y=19, z=0}, {x=0, y=0, z=0}) entity:set_attach(player, "", {x=0, y=height, z=0}, {x=0, y=0, z=0})
entity:get_luaentity().wielder = player entity:get_luaentity().wielder = player
end
end end
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)