From 43ecc7d7cb44e91fa3d5601e91e79e6f2bb90a27 Mon Sep 17 00:00:00 2001
From: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
Date: Mon, 13 Apr 2020 19:57:04 +0200
Subject: [PATCH] save owner from bones

partially attends to https://github.com/minetest-mapserver/mapserver/issues/72
---
 bones.lua | 20 ++++++++++++++++++++
 init.lua  |  4 ++++
 mod.conf  |  2 +-
 3 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 bones.lua

diff --git a/bones.lua b/bones.lua
new file mode 100644
index 0000000..142125c
--- /dev/null
+++ b/bones.lua
@@ -0,0 +1,20 @@
+-- bones owner saving workaround
+-- https://github.com/minetest/minetest_game/blob/master/mods/bones/init.lua#L120
+
+local bones_def = minetest.registered_items["bones:bones"]
+assert(bones_def)
+
+local bones_on_timer = bones_def.on_timer
+assert(bones_on_timer)
+assert(type(bones_on_timer) == "function")
+
+minetest.override_item("bones:bones", {
+	on_timer = function(pos, elapsed)
+		-- save owner in separate field
+		local meta = minetest.get_meta(pos)
+		meta:set_string("_owner", meta:get_string("owner"))
+
+		-- call original function
+		bones_on_timer(pos, elapsed)
+	end
+})
diff --git a/init.lua b/init.lua
index f4c249c..5f5af2d 100644
--- a/init.lua
+++ b/init.lua
@@ -17,6 +17,10 @@ dofile(MP.."/privs.lua")
 dofile(MP.."/show_waypoint.lua")
 dofile(MP.."/search.lua")
 
+if minetest.get_modpath("bones") then
+	dofile(MP.."/bones.lua")
+end
+
 
 -- optional mapserver-bridge stuff below
 local http = minetest.request_http_api()
diff --git a/mod.conf b/mod.conf
index 76046d8..aff3949 100644
--- a/mod.conf
+++ b/mod.conf
@@ -1,3 +1,3 @@
 name = mapserver
 description = Mod for the mapserver.
-optional_depends = default, dye, advtrains, minecart, monitoring
+optional_depends = default, dye, advtrains, minecart, monitoring, bones
-- 
GitLab