forked from minetest/minetest_game
Prevent bucket from replacing unloaded nodes
This commit is contained in:
parent
8eff7ba0cd
commit
1a9362afed
@ -58,18 +58,19 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
|
|||||||
return
|
return
|
||||||
end
|
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
|
-- Call on_rightclick if the pointed node defines it
|
||||||
if user and not user:get_player_control().sneak then
|
if ndef and ndef.on_rightclick and
|
||||||
local n = minetest.get_node(pointed_thing.under)
|
user and not user:get_player_control().sneak then
|
||||||
local nn = n.name
|
|
||||||
local ndef = minetest.registered_nodes[nn]
|
|
||||||
if ndef and ndef.on_rightclick then
|
|
||||||
return ndef.on_rightclick(
|
return ndef.on_rightclick(
|
||||||
pointed_thing.under,
|
pointed_thing.under,
|
||||||
n, user,
|
node, user,
|
||||||
itemstack) or itemstack
|
itemstack) or itemstack
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
local place_liquid = function(pos, node, source, flowing, fullness)
|
local place_liquid = function(pos, node, source, flowing, fullness)
|
||||||
if check_protection(pos,
|
if check_protection(pos,
|
||||||
@ -98,19 +99,18 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Check if pointing to a buildable node
|
-- Check if pointing to a buildable node
|
||||||
local node = minetest.get_node(pointed_thing.under)
|
|
||||||
local fullness = tonumber(itemstack:get_metadata())
|
local fullness = tonumber(itemstack:get_metadata())
|
||||||
if not fullness then fullness = LIQUID_MAX end
|
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
|
-- buildable; replace the node
|
||||||
place_liquid(pointed_thing.under, node,
|
place_liquid(pointed_thing.under, node,
|
||||||
source, flowing, fullness)
|
source, flowing, fullness)
|
||||||
else
|
else
|
||||||
-- not buildable to; place the liquid above
|
-- not buildable to; place the liquid above
|
||||||
-- check if the node above can be replaced
|
-- check if the node above can be replaced
|
||||||
local node = minetest.get_node(pointed_thing.above)
|
local node = minetest.get_node_or_nil(pointed_thing.above)
|
||||||
if minetest.registered_nodes[node.name].buildable_to then
|
if node and minetest.registered_nodes[node.name].buildable_to then
|
||||||
place_liquid(pointed_thing.above,
|
place_liquid(pointed_thing.above,
|
||||||
node, source,
|
node, source,
|
||||||
flowing, fullness)
|
flowing, fullness)
|
||||||
|
Loading…
Reference in New Issue
Block a user