diff --git a/minetest.conf.example b/minetest.conf.example
index 672709d..08365e1 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -23,6 +23,9 @@
 # 0 to disable. By default it is "share_bones_time" divide by four.
 #share_bones_time_early = 300
 
+# Inform player of condition and location of new bones.
+#bones_position_message = false
+
 # Whether fire should be enabled. If disabled, 'basic_flame' nodes will
 # disappear.
 # 'permanent_flame' nodes will remain with either setting.
diff --git a/mods/bones/init.lua b/mods/bones/init.lua
index 4294518..480a55c 100644
--- a/mods/bones/init.lua
+++ b/mods/bones/init.lua
@@ -186,20 +186,32 @@ minetest.register_on_dieplayer(function(player)
 		bones_mode = "bones"
 	end
 
+	local bones_position_message = minetest.settings:get_bool("bones_position_message") == true
+	local player_name = player:get_player_name()
+	local pos = vector.round(player:get_pos())
+	local pos_string = minetest.pos_to_string(pos)
+
 	-- return if keep inventory set or in creative mode
 	if bones_mode == "keep" or (creative and creative.is_enabled_for
 			and creative.is_enabled_for(player:get_player_name())) then
+		minetest.log("action", player_name .. " dies at " .. pos_string ..
+			". No bones placed")
+		if bones_position_message then
+			minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".")
+		end
 		return
 	end
 
 	local player_inv = player:get_inventory()
 	if is_all_empty(player_inv) then
+		minetest.log("action", player_name .. " dies at " .. pos_string ..
+			". No bones placed")
+		if bones_position_message then
+			minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".")
+		end
 		return
 	end
 
-	local pos = vector.round(player:getpos())
-	local player_name = player:get_player_name()
-
 	-- check if it's possible to place bones, if not find space near player
 	if bones_mode == "bones" and not may_replace(pos, player) then
 		local air = minetest.find_node_near(pos, 1, {"air"})
@@ -218,12 +230,25 @@ minetest.register_on_dieplayer(function(player)
 			player_inv:set_list(list_name, {})
 		end
 		drop(pos, ItemStack("bones:bones"))
+		minetest.log("action", player_name .. " dies at " .. pos_string ..
+			". Inventory dropped")
+		if bones_position_message then
+			minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string ..
+				", and dropped their inventory.")
+		end
 		return
 	end
 
 	local param2 = minetest.dir_to_facedir(player:get_look_dir())
 	minetest.set_node(pos, {name = "bones:bones", param2 = param2})
 
+	minetest.log("action", player_name .. " dies at " .. pos_string ..
+		". Bones placed")
+	if bones_position_message then
+		minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string ..
+			", and bones were placed.")
+	end
+
 	local meta = minetest.get_meta(pos)
 	local inv = meta:get_inventory()
 	inv:set_size("main", 8 * 4)
diff --git a/settingtypes.txt b/settingtypes.txt
index 343d041..4f930a8 100644
--- a/settingtypes.txt
+++ b/settingtypes.txt
@@ -44,6 +44,9 @@ tnt_radius (TNT radius) int 3 0
 #    Setting this to 0 will disable sharing of bones completely.
 share_bones_time (Bone share time) int 1200 0
 
+#    Inform player of condition and location of new bones.
+bones_position_message (Inform player about bones) bool false
+
 #    Replaces old stairs with new ones. Only required for older worlds.
 enable_stairs_replace_abm (Replace old stairs) bool false