From 74f79b060e8a0e0fc34de803bd8bf411c66a4a99 Mon Sep 17 00:00:00 2001 From: minermoder27 Date: Mon, 20 Oct 2014 18:18:27 +1300 Subject: [PATCH] Merge from TenPlus1, packaged by Wuzzy From https://forum.minetest.net/viewtopic.php?p=157958#p150768 https://forum.minetest.net/viewtopic.php?p=157958#p157958 --- depends.txt | 1 - description.txt | 1 + init.lua | 54 ++++++++++++++++++++----------------------------- 3 files changed, 23 insertions(+), 33 deletions(-) create mode 100644 description.txt diff --git a/depends.txt b/depends.txt index 4ad96d5..e69de29 100644 --- a/depends.txt +++ b/depends.txt @@ -1 +0,0 @@ -default diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..29f1833 --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +With this mod, players will drop all their items in their inventory on the ground when they die. diff --git a/init.lua b/init.lua index 1ead618..fbe01c4 100644 --- a/init.lua +++ b/init.lua @@ -1,53 +1,43 @@ +local drop = function(pos, itemstack) + local it = itemstack:take_item(itemstack:get_count()) + local obj = core.add_item(pos, it) + if obj then + obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)}) -local drop = function(pos, istack) - --for i=1, istack:get_count() do - local obj = minetest.env:add_item(pos, istack:get_name() .. " " .. istack:get_count()) - if obj ~= nil then - obj:get_luaentity().collect = true - local x = math.random(1, 5) - if math.random(1,2) == 1 then - x = -x - end - local z = math.random(1, 5) - if math.random(1,2) == 1 then - z = -z - end - obj:setvelocity({x=1/x, y=5, z=1/z}) - - -- FIXME this doesnt work for deactiveted objects - if minetest.setting_get("remove_items") and tonumber(minetest.setting_get("remove_items")) then - minetest.after(tonumber(minetest.setting_get("remove_items")), function(obj) - obj:remove() - end, obj) - end - end - --end + local remi = minetest.setting_get("remove_items") + + if remi and remi == "true" then + obj:remove() + end + + end + return itemstack end - - minetest.register_on_dieplayer(function(player) + if minetest.setting_getbool("creative_mode") then return end - + local pos = player:getpos() - pos.x = math.floor(pos.x+0.5) - pos.y = math.floor(pos.y+0.5) - pos.z = math.floor(pos.z+0.5) - local param2 = minetest.dir_to_facedir(player:get_look_dir()) - + pos.y = math.floor(pos.y + 0.5) + + minetest.chat_send_player(player:get_player_name(), 'at '..math.floor(pos.x)..','..math.floor(pos.y)..','..math.floor(pos.z)) + local player_inv = player:get_inventory() - + for i=1,player_inv:get_size("main") do drop(pos, player_inv:get_stack("main", i)) player_inv:set_stack("main", i, nil) end + for i=1,player_inv:get_size("craft") do drop(pos, player_inv:get_stack("craft", i)) player_inv:set_stack("craft", i, nil) end + end)