From e376d57bd290107a14271b8a62eade46a3f305ff Mon Sep 17 00:00:00 2001 From: Jacob Gustafson <7557867+poikilos@users.noreply.github.com> Date: Sat, 2 Jun 2018 09:54:45 +0200 Subject: [PATCH] Add optional bones messages for player and log --- minetest.conf.example | 3 +++ mods/bones/init.lua | 31 ++++++++++++++++++++++++++++--- settingtypes.txt | 3 +++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index 672709d3..08365e11 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 42945182..480a55c4 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 343d041d..4f930a8b 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