Skip to content
Snippets Groups Projects
Commit 1a9362af authored by ShadowNinja's avatar ShadowNinja
Browse files

Prevent bucket from replacing unloaded nodes

parent 8eff7ba0
Branches
Tags
No related merge requests found
......@@ -58,17 +58,18 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
return
end
local node = minetest.get_node_or_nil(pointed_thing.under)
local ndef
if node then
ndef = minetest.registered_nodes[node.name]
end
-- Call on_rightclick if the pointed node defines it
if user and not user:get_player_control().sneak then
local n = minetest.get_node(pointed_thing.under)
local nn = n.name
local ndef = minetest.registered_nodes[nn]
if ndef and ndef.on_rightclick then
return ndef.on_rightclick(
pointed_thing.under,
n, user,
itemstack) or itemstack
end
if ndef and ndef.on_rightclick and
user and not user:get_player_control().sneak then
return ndef.on_rightclick(
pointed_thing.under,
node, user,
itemstack) or itemstack
end
local place_liquid = function(pos, node, source, flowing, fullness)
......@@ -98,19 +99,18 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
end
-- Check if pointing to a buildable node
local node = minetest.get_node(pointed_thing.under)
local fullness = tonumber(itemstack:get_metadata())
if not fullness then fullness = LIQUID_MAX end
if minetest.registered_nodes[node.name].buildable_to then
if ndef and ndef.buildable_to then
-- buildable; replace the node
place_liquid(pointed_thing.under, node,
source, flowing, fullness)
else
-- not buildable to; place the liquid above
-- check if the node above can be replaced
local node = minetest.get_node(pointed_thing.above)
if minetest.registered_nodes[node.name].buildable_to then
local node = minetest.get_node_or_nil(pointed_thing.above)
if node and minetest.registered_nodes[node.name].buildable_to then
place_liquid(pointed_thing.above,
node, source,
flowing, fullness)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment