Add option to disable bones
- Players keep inventory on death if disabled
This commit is contained in:
parent
5c59fb1091
commit
1c2489e308
@ -1,10 +1,13 @@
|
|||||||
# This file contains settings of Minetest Game that can be changed in minetest.conf
|
# This file contains settings of Minetest NeXt that can be changed in minetest.conf
|
||||||
# By default, all the settings are commented and not functional.
|
# By default, all the settings are commented and not functional.
|
||||||
# Uncomment settings by removing the preceding #.
|
# Uncomment settings by removing the preceding #.
|
||||||
|
|
||||||
# Whether creative mode (fast digging of all blocks, unlimited resources) should be enabled
|
# Whether creative mode (fast digging of all blocks, unlimited resources) should be enabled
|
||||||
#creative_mode = false
|
#creative_mode = false
|
||||||
|
|
||||||
|
# Whether players inventory is placed into a node on death (bones node)
|
||||||
|
#enable_bones = true
|
||||||
|
|
||||||
# The time in seconds after which the bones of a dead player can be looted by everyone
|
# The time in seconds after which the bones of a dead player can be looted by everyone
|
||||||
# 0 to disable
|
# 0 to disable
|
||||||
#share_bones_time = 1200
|
#share_bones_time = 1200
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
-- Minetest 0.4 mod: bones
|
local bones_enabled = core.setting_getbool("enable_bones") ~= false
|
||||||
-- See README.txt for licensing and other information.
|
|
||||||
|
|
||||||
bones = {}
|
bones = {}
|
||||||
|
|
||||||
@ -40,50 +39,50 @@ minetest.register_node("bones:bones", {
|
|||||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||||
dug = {name="default_gravel_footstep", gain=1.0},
|
dug = {name="default_gravel_footstep", gain=1.0},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
can_dig = function(pos, player)
|
can_dig = function(pos, player)
|
||||||
local inv = minetest.get_meta(pos):get_inventory()
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
return is_owner(pos, player:get_player_name()) and inv:is_empty("main")
|
return is_owner(pos, player:get_player_name()) and inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||||
if is_owner(pos, player:get_player_name()) then
|
if is_owner(pos, player:get_player_name()) then
|
||||||
return count
|
return count
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
return 0
|
return 0
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
if is_owner(pos, player:get_player_name()) then
|
if is_owner(pos, player:get_player_name()) then
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if meta:get_inventory():is_empty("main") then
|
if meta:get_inventory():is_empty("main") then
|
||||||
minetest.remove_node(pos)
|
minetest.remove_node(pos)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_punch = function(pos, node, player)
|
on_punch = function(pos, node, player)
|
||||||
if(not is_owner(pos, player:get_player_name())) then
|
if(not is_owner(pos, player:get_player_name())) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if(minetest.get_meta(pos):get_string("infotext") == "") then
|
if(minetest.get_meta(pos):get_string("infotext") == "") then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local inv = minetest.get_meta(pos):get_inventory()
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
local player_inv = player:get_inventory()
|
local player_inv = player:get_inventory()
|
||||||
local has_space = true
|
local has_space = true
|
||||||
|
|
||||||
for i=1,inv:get_size("main") do
|
for i=1,inv:get_size("main") do
|
||||||
local stk = inv:get_stack("main", i)
|
local stk = inv:get_stack("main", i)
|
||||||
if player_inv:room_for_item("main", stk) then
|
if player_inv:room_for_item("main", stk) then
|
||||||
@ -94,7 +93,7 @@ minetest.register_node("bones:bones", {
|
|||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- remove bones if player emptied them
|
-- remove bones if player emptied them
|
||||||
if has_space then
|
if has_space then
|
||||||
if player_inv:room_for_item("main", {name = "bones:bones"}) then
|
if player_inv:room_for_item("main", {name = "bones:bones"}) then
|
||||||
@ -105,7 +104,7 @@ minetest.register_node("bones:bones", {
|
|||||||
minetest.remove_node(pos)
|
minetest.remove_node(pos)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local time = meta:get_int("time") + elapsed
|
local time = meta:get_int("time") + elapsed
|
||||||
@ -150,10 +149,10 @@ local function may_replace(pos, player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_dieplayer(function(player)
|
minetest.register_on_dieplayer(function(player)
|
||||||
if minetest.setting_getbool("creative_mode") then
|
if minetest.setting_getbool("creative_mode") or not bones_enabled then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local player_inv = player:get_inventory()
|
local player_inv = player:get_inventory()
|
||||||
if player_inv:is_empty("main") and
|
if player_inv:is_empty("main") and
|
||||||
player_inv:is_empty("craft") then
|
player_inv:is_empty("craft") then
|
||||||
@ -188,14 +187,14 @@ minetest.register_on_dieplayer(function(player)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.set_node(pos, {name="bones:bones", param2=param2})
|
minetest.set_node(pos, {name="bones:bones", param2=param2})
|
||||||
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
inv:set_size("main", 8*4)
|
inv:set_size("main", 8*4)
|
||||||
inv:set_list("main", player_inv:get_list("main"))
|
inv:set_list("main", player_inv:get_list("main"))
|
||||||
|
|
||||||
for i=1,player_inv:get_size("craft") do
|
for i=1,player_inv:get_size("craft") do
|
||||||
local stack = player_inv:get_stack("craft", i)
|
local stack = player_inv:get_stack("craft", i)
|
||||||
if inv:room_for_item("main", stack) then
|
if inv:room_for_item("main", stack) then
|
||||||
@ -205,13 +204,13 @@ minetest.register_on_dieplayer(function(player)
|
|||||||
minetest.add_item(pos, stack)
|
minetest.add_item(pos, stack)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
player_inv:set_list("main", {})
|
player_inv:set_list("main", {})
|
||||||
player_inv:set_list("craft", {})
|
player_inv:set_list("craft", {})
|
||||||
|
|
||||||
meta:set_string("formspec", bones.bones_formspec)
|
meta:set_string("formspec", bones.bones_formspec)
|
||||||
meta:set_string("owner", player_name)
|
meta:set_string("owner", player_name)
|
||||||
|
|
||||||
if share_bones_time ~= 0 then
|
if share_bones_time ~= 0 then
|
||||||
meta:set_string("infotext", player_name.."'s fresh bones")
|
meta:set_string("infotext", player_name.."'s fresh bones")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user