From 9425b8dcf5910d61dbbfd295338015c57c17a215 Mon Sep 17 00:00:00 2001 From: Maksim Date: Thu, 16 Jan 2020 10:53:37 +0100 Subject: [PATCH 1/7] Fix entity creating crash and restore 0.4 support --- CHANGELOG.md | 10 ++++++++++ README.md | 2 +- init.lua | 17 +++++++++++------ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6b46da..c7fc5dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [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 diff --git a/README.md b/README.md index 89e326f..ff9e1cb 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ on that line. ## 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 will generally not be fixed. diff --git a/init.lua b/init.lua index 98c76d6..22fede5 100644 --- a/init.lua +++ b/init.lua @@ -21,12 +21,13 @@ minetest.register_entity("gauges:hp_bar", { on_step = function(self) local player = self.wielder + local gauge = self.object if not 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 - self.object:remove() + gauge:remove() return end @@ -34,7 +35,7 @@ minetest.register_entity("gauges:hp_bar", { 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({ + gauge:set_properties({ textures = { "health_"..tostring(hp)..".png^".. "breath_"..tostring(breath)..".png" @@ -47,10 +48,14 @@ minetest.register_entity("gauges:hp_bar", { }) local function add_gauge(player) - local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar") + if player and minetest.is_player(player) then + 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:get_luaentity().wielder = player + 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_on_joinplayer(function(player) From b075262dafcacd34e5db0cac2e1b0887133d264c Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Tue, 21 Jan 2020 20:41:11 +0100 Subject: [PATCH 2/7] More reliable version checking --- README.md | 4 ++-- init.lua | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ff9e1cb..7364049 100644 --- a/README.md +++ b/README.md @@ -60,8 +60,8 @@ on that line. ## Version compatibility -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 +Gauges is currently support Minetest 5.0+ and 0.4.17+. This does not work with older versions. +Issues arising in versions older than 5.0 will generally not be fixed. ## License diff --git a/init.lua b/init.lua index 22fede5..f82acd2 100644 --- a/init.lua +++ b/init.lua @@ -50,8 +50,13 @@ minetest.register_entity("gauges:hp_bar", { local function add_gauge(player) if player and minetest.is_player(player) then 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 + local height = 19 + + -- check for Minetest 0.4.17 + 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 From 960ca02e42b6b5c3f4c2ef5a3d5711ede1dfb538 Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Tue, 21 Jan 2020 22:52:07 +0100 Subject: [PATCH 3/7] Readd Gauges when a player is lost --- init.lua | 78 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/init.lua b/init.lua index f82acd2..840f582 100644 --- a/init.lua +++ b/init.lua @@ -7,48 +7,12 @@ 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 +-- 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", { - visual = "sprite", - visual_size = {x=1, y=1/16, z=1}, - -- The texture is changed later in the code - textures = {"blank.png"}, - collisionbox = {0}, - physical = false, - - on_step = function(self) - local player = self.wielder - local gauge = self.object - - if not player or - not minetest.is_player(player) or - vector_distance(player:get_pos(), gauge:get_pos()) > 3 - then - gauge:remove() - return - end - - 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_"..tostring(hp)..".png^".. - "breath_"..tostring(breath)..".png" - } - }) - self.hp = hp - self.breath = breath - end - end -}) - local function add_gauge(player) - if player and minetest.is_player(player) then + if player and player:is_player() then local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar") local height = 19 @@ -63,6 +27,42 @@ local function add_gauge(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, + + on_step = function(self) + local player = self.wielder + local gauge = self.object + + 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 + + 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 +}) + minetest.register_on_joinplayer(function(player) minetest.after(1, add_gauge, player) end) From 0f924c177c1d2579274236daa455eaf9909020bd Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Tue, 21 Jan 2020 20:45:47 +0100 Subject: [PATCH 4/7] Bump to version 1.0.3 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7fc5dd..9bfbe4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [1.0.3] - 2020-01-21 + +### Fixed + +- Fix the problem when the Gauges lost the player + +### Changed + +- Now the Minetest version is checked using `minetest.get_version()`. It is very reliable. + ## [1.0.2] - 2020-01-16 ### Fixed @@ -29,3 +39,5 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [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 +[1.0.2]: https://github.com/minetest-mods/gauges/compare/v1.0.1...v1.0.2 +[1.0.3]: https://github.com/minetest-mods/gauges/compare/v1.0.2...v1.0.3 From ab7806a4bfe5ee9546bbc88cbb9f38f96d8a5fd4 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 15 Feb 2020 16:19:22 +0100 Subject: [PATCH 5/7] Tweak grammar in various files - Fix release date to match the actual 1.0.3 release. --- CHANGELOG.md | 6 +++--- README.md | 5 ++--- init.lua | 3 ++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bfbe4f..5043537 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,15 +7,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -## [1.0.3] - 2020-01-21 +## [1.0.3] - 2020-02-15 ### Fixed -- Fix the problem when the Gauges lost the player +- Fix an issue with gauges occasionally no longer appearing above a player. ### Changed -- Now the Minetest version is checked using `minetest.get_version()`. It is very reliable. +- Improved the reliability of the Minetest version check (for compatibility with 0.4.17). ## [1.0.2] - 2020-01-16 diff --git a/README.md b/README.md index 7364049..ed04b79 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,8 @@ on that line. ## Version compatibility -Gauges is currently support Minetest 5.0+ and 0.4.17+. This does not work with older versions. -Issues arising in versions older than 5.0 -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 diff --git a/init.lua b/init.lua index 840f582..62636dd 100644 --- a/init.lua +++ b/init.lua @@ -16,7 +16,8 @@ local function add_gauge(player) local entity = minetest.add_entity(player:get_pos(), "gauges:hp_bar") local height = 19 - -- check for Minetest 0.4.17 + -- 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 From 0439216cabaa0895db2665863b494c9d97d466e4 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 15 Feb 2020 16:24:29 +0100 Subject: [PATCH 6/7] Fix the Unreleased comparison link in the changelog --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5043537..709aa15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Initial versioned release. -[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 -[1.0.2]: https://github.com/minetest-mods/gauges/compare/v1.0.1...v1.0.2 +[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 From 9b47fc7b4b458b29bed271b3ebc452d30446b5ce Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 3 Jun 2020 18:56:14 +0200 Subject: [PATCH 7/7] Declare the minimum supported Minetest version to 0.4.17 This information can be used by ContentDB. --- mod.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/mod.conf b/mod.conf index 0f886a6..4a00f68 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,3 @@ name = gauges description = Adds health and breath gauges above players. +min_minetest_version = 0.4.17