Skip to content

Commit

Permalink
Add optional bones messages for player and log
Browse files Browse the repository at this point in the history
  • Loading branch information
Poikilos authored and SmallJoker committed Jun 2, 2018
1 parent 37b206e commit e376d57
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 3 deletions.
3 changes: 3 additions & 0 deletions minetest.conf.example
Expand Up @@ -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.
Expand Down
31 changes: 28 additions & 3 deletions mods/bones/init.lua
Expand Up @@ -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"})
Expand All @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions settingtypes.txt
Expand Up @@ -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

Expand Down

0 comments on commit e376d57

Please sign in to comment.