Deal with lava cans wasting lava (#532)

Rather than replacing lava source with lava source, the lava can will now attempt to place lava to the node "above".
This change applies the same for all registered cans.
This commit is contained in:
BobFred7 2020-05-01 15:24:12 -04:00 committed by GitHub
parent 34f2894321
commit b2a124dd83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -48,14 +48,17 @@ function technic.register_can(d)
on_place = function(itemstack, user, pointed_thing) on_place = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then return end if pointed_thing.type ~= "node" then return end
local pos = pointed_thing.under local pos = pointed_thing.under
local def = minetest.registered_nodes[minetest.get_node(pos).name] or {} local node_name = minetest.get_node(pos).name
local def = minetest.registered_nodes[node_name] or {}
if def.on_rightclick and user and not user:get_player_control().sneak then if def.on_rightclick and user and not user:get_player_control().sneak then
return def.on_rightclick(pos, minetest.get_node(pos), user, itemstack, pointed_thing) return def.on_rightclick(pos, minetest.get_node(pos), user, itemstack, pointed_thing)
end end
if not def.buildable_to then if not def.buildable_to or node_name == data.liquid_source_name then
pos = pointed_thing.above pos = pointed_thing.above
def = minetest.registered_nodes[minetest.get_node(pos).name] or {} node_name = minetest.get_node(pos).name
if not def.buildable_to then return end def = minetest.registered_nodes[node_name] or {}
-- Try to place node above the pointed source, or abort.
if not def.buildable_to or node_name == data.liquid_source_name then return end
end end
local charge = get_can_level(itemstack) local charge = get_can_level(itemstack)
if charge == 0 then return end if charge == 0 then return end