Skip to content

Commit

Permalink
Make empty buckets stackable
Browse files Browse the repository at this point in the history
  • Loading branch information
tenplus1 authored and BlockMen committed Feb 28, 2015
1 parent 3e912f7 commit df35360
Showing 1 changed file with 47 additions and 23 deletions.
70 changes: 47 additions & 23 deletions mods/bucket/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -103,31 +103,55 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end

minetest.register_craftitem("bucket:bucket_empty", {
description = "Empty Bucket",
inventory_image = "bucket.png",
stack_max = 1,
liquids_pointable = true,
on_use = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local liquiddef = bucket.liquids[node.name]
if liquiddef ~= nil and liquiddef.itemname ~= nil and
node.name == liquiddef.source then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then
return
end
description = "Empty Bucket",
inventory_image = "bucket.png",
stack_max = 99,
liquids_pointable = true,
on_use = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local liquiddef = bucket.liquids[node.name]
local item_count = user:get_wielded_item():get_count()

if liquiddef ~= nil
and liquiddef.itemname ~= nil
and node.name == liquiddef.source then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then
return
end

-- default set to return filled bucket
local giving_back = liquiddef.itemname

-- check if holding more than 1 empty bucket
if item_count > 1 then

-- if space in inventory add filled bucked, otherwise drop as item
local inv = user:get_inventory()
if inv:room_for_item("main", {name=liquiddef.itemname}) then
inv:add_item("main", liquiddef.itemname)
else
local pos = user:getpos()
pos.y = math.floor(pos.y + 0.5)
core.add_item(pos, liquiddef.itemname)
end

-- set to return empty buckets minus 1
giving_back = "bucket:bucket_empty "..tostring(item_count-1)

end

minetest.add_node(pointed_thing.under, {name="air"})
minetest.add_node(pointed_thing.under, {name="air"})

return ItemStack(liquiddef.itemname)
end
end,
return ItemStack(giving_back)
end
end,
})

bucket.register_liquid(
Expand Down

2 comments on commit df35360

@PilzAdam
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code has wrong indentation.

@ShadowNinja
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.