forked from MineClone5/MineClone5
Dispensers dispense water buckets into cauldrons
This commit is contained in:
parent
74d5da78a1
commit
785b4a2ef7
|
@ -63,11 +63,7 @@ local dispenserdef = {
|
|||
droppos = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
end
|
||||
local dropnode = minetest.get_node(droppos)
|
||||
-- Do not dispense into solid nodes
|
||||
local dropnodedef = minetest.registered_nodes[dropnode.name]
|
||||
if dropnodedef.walkable then
|
||||
return
|
||||
end
|
||||
local stacks = {}
|
||||
for i=1,inv:get_size("main") do
|
||||
local stack = inv:get_stack("main", i)
|
||||
|
@ -83,8 +79,12 @@ local dispenserdef = {
|
|||
local iname = stack:get_name()
|
||||
local igroups = minetest.registered_items[iname].groups
|
||||
|
||||
-- Do not dispense into solid nodes. Exception: Water bucket into cauldron
|
||||
if dropnodedef.walkable and not (minetest.get_item_group(dropnode.name, "cauldron") ~= 0 and (iname == "mcl_buckets:bucket_water" or iname == "mcl_buckets:bucket_river_water")) then
|
||||
-- no-op
|
||||
|
||||
--[===[ Dispense item ]===]
|
||||
if iname == "mcl_throwing:arrow" then
|
||||
elseif iname == "mcl_throwing:arrow" then
|
||||
-- Shoot arrow
|
||||
local shootpos = vector.add(pos, vector.multiply(dropdir, 0.51))
|
||||
local yaw = math.atan2(dropdir.z, dropdir.x) - math.pi/2
|
||||
|
@ -174,8 +174,17 @@ local dispenserdef = {
|
|||
inv:set_stack("main", stack_id, stack)
|
||||
end
|
||||
elseif iname == "mcl_buckets:bucket_water" or iname == "mcl_buckets:bucket_river_water" or iname == "mcl_buckets:bucket_lava" then
|
||||
local do_empty = false
|
||||
-- Place water/lava source
|
||||
if dropnodedef.buildable_to then
|
||||
if minetest.get_item_group(dropnode.name, "cauldron") ~= 0 then
|
||||
if iname == "mcl_buckets:bucket_water" then
|
||||
minetest.set_node(droppos, {name = "mcl_cauldrons:cauldron_3"})
|
||||
do_empty = true
|
||||
elseif iname == "mcl_buckets:bucket_river_water" then
|
||||
minetest.set_node(droppos, {name = "mcl_cauldrons:cauldron_3r"})
|
||||
do_empty = true
|
||||
end
|
||||
elseif dropnodedef.buildable_to then
|
||||
local dim = mcl_worlds.pos_to_dimension(droppos)
|
||||
if iname == "mcl_buckets:bucket_water" then
|
||||
if dim == "nether" then
|
||||
|
@ -183,20 +192,25 @@ local dispenserdef = {
|
|||
else
|
||||
minetest.set_node(droppos, {name = "mcl_core:water_source"})
|
||||
end
|
||||
do_empty = true
|
||||
elseif iname == "mcl_buckets:bucket_river_water" then
|
||||
if dim == "nether" then
|
||||
minetest.sound_play("fire_extinguish_flame", {pos = droppos, gain = 0.25, max_hear_distance = 16})
|
||||
else
|
||||
minetest.set_node(droppos, {name = "mclx_core:river_water_source"})
|
||||
end
|
||||
do_empty = true
|
||||
elseif iname == "mcl_buckets:bucket_lava" then
|
||||
if dim == "nether" then
|
||||
minetest.set_node(droppos, {name = "mcl_nether:nether_lava_source"})
|
||||
else
|
||||
minetest.set_node(droppos, {name = "mcl_core:lava_source"})
|
||||
end
|
||||
do_empty = true
|
||||
end
|
||||
end
|
||||
|
||||
if do_empty then
|
||||
stack:take_item()
|
||||
inv:set_stack("main", stack_id, stack)
|
||||
|
||||
|
|
Loading…
Reference in New Issue