summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPilzAdam <PilzAdam@gmx.de>2013-01-12 20:18:43 +0100
committerPilzAdam <PilzAdam@gmx.de>2013-02-21 16:58:50 +0100
commitef6b8bee07b9cefe7d463fabd199548d37ff2bee (patch)
treeebdfb27254c858ebdb2b9a423361a7ab21a39247
parentb29834ab02b47a120616b4c807a573a851b3ccd4 (diff)
downloadminetest-ef6b8bee07b9cefe7d463fabd199548d37ff2bee.tar.gz
minetest-ef6b8bee07b9cefe7d463fabd199548d37ff2bee.tar.bz2
minetest-ef6b8bee07b9cefe7d463fabd199548d37ff2bee.zip
Drop nodes as items when dugged and no room in inventory and dont remove dropped items when no room in inventory
-rw-r--r--builtin/item.lua10
-rw-r--r--builtin/item_entity.lua5
2 files changed, 13 insertions, 2 deletions
diff --git a/builtin/item.lua b/builtin/item.lua
index 69c4bd0bb..1349fdf63 100644
--- a/builtin/item.lua
+++ b/builtin/item.lua
@@ -290,7 +290,15 @@ function minetest.handle_node_drops(pos, drops, digger)
if digger:get_inventory() then
local _, dropped_item
for _, dropped_item in ipairs(drops) do
- digger:get_inventory():add_item("main", dropped_item)
+ local left = digger:get_inventory():add_item("main", dropped_item)
+ if not left:is_empty() then
+ local p = {
+ x = pos.x + math.random()/2-0.25,
+ y = pos.y + math.random()/2-0.25,
+ z = pos.z + math.random()/2-0.25,
+ }
+ minetest.env:add_item(p, left)
+ end
end
end
end
diff --git a/builtin/item_entity.lua b/builtin/item_entity.lua
index 46415e538..1699cb03c 100644
--- a/builtin/item_entity.lua
+++ b/builtin/item_entity.lua
@@ -109,7 +109,10 @@ minetest.register_entity("__builtin:item", {
on_punch = function(self, hitter)
if self.itemstring ~= '' then
- hitter:get_inventory():add_item("main", self.itemstring)
+ local left = hitter:get_inventory():add_item("main", self.itemstring)
+ if not left:is_empty() then
+ return
+ end
end
self.object:remove()
end,