Skip to content

Commit

Permalink
Log bucket liquid placement (#3108)
Browse files Browse the repository at this point in the history
  • Loading branch information
Emojigit authored Apr 13, 2024
1 parent a43a6bc commit 0639681
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions mods/bucket/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ local function check_protection(pos, name, text)
return false
end

local function log_action(pos, name, action)
minetest.log("action", (name ~= "" and name or "A mod")
.. " " .. action .. " at " .. minetest.pos_to_string(pos) .. " with a bucket")
end

-- Register a new liquid
-- source = name of the source node
-- flowing = name of the flowing node
Expand Down Expand Up @@ -101,13 +106,13 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end
end

if check_protection(lpos, user
and user:get_player_name()
or "", "place "..source) then
local pname = user and user:get_player_name() or ""
if check_protection(lpos, pname, "place "..source) then
return
end

minetest.set_node(lpos, {name = source})
log_action(lpos, pname, "placed " .. source)
return ItemStack("bucket:bucket_empty")
end
})
Expand All @@ -128,16 +133,16 @@ minetest.register_craftitem("bucket:bucket_empty", {
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local pos = pointed_thing.under
local node = minetest.get_node(pos)
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
local pname = user:get_player_name()
if check_protection(pos, pname, "take ".. node.name) then
return
end

Expand All @@ -152,9 +157,9 @@ minetest.register_craftitem("bucket:bucket_empty", {
if inv:room_for_item("main", {name=liquiddef.itemname}) then
inv:add_item("main", liquiddef.itemname)
else
local pos = user:get_pos()
pos.y = math.floor(pos.y + 0.5)
minetest.add_item(pos, liquiddef.itemname)
local upos = user:get_pos()
upos.y = math.floor(upos.y + 0.5)
minetest.add_item(upos, liquiddef.itemname)
end

-- set to return empty buckets minus 1
Expand All @@ -166,18 +171,21 @@ minetest.register_craftitem("bucket:bucket_empty", {
local source_neighbor = false
if liquiddef.force_renew then
source_neighbor =
minetest.find_node_near(pointed_thing.under, 1, liquiddef.source)
minetest.find_node_near(pos, 1, liquiddef.source)
end
if not (source_neighbor and liquiddef.force_renew) then
minetest.add_node(pointed_thing.under, {name = "air"})
if source_neighbor and liquiddef.force_renew then
log_action(pos, pname, "picked up " .. liquiddef.source .. " (force renewed)")
else
minetest.add_node(pos, {name = "air"})
log_action(pos, pname, "picked up " .. liquiddef.source)
end

return ItemStack(giving_back)
else
-- non-liquid nodes will have their on_punch triggered
local node_def = minetest.registered_nodes[node.name]
if node_def then
node_def.on_punch(pointed_thing.under, node, user, pointed_thing)
node_def.on_punch(pos, node, user, pointed_thing)
end
return user:get_wielded_item()
end
Expand Down

0 comments on commit 0639681

Please sign in to comment.