mirror of
https://github.com/minetest-mods/hopper.git
synced 2025-01-03 02:57:29 +01:00
Move getting inventory to a separate function
This commit is contained in:
parent
c396c88277
commit
e2f4aec5c9
44
utility.lua
44
utility.lua
@ -69,6 +69,22 @@ local get_placer = function(player_name)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_container_inventory(node_pos, inv_info)
|
||||||
|
local get_inventory_fn = inv_info.get_inventory
|
||||||
|
|
||||||
|
local inventory
|
||||||
|
if get_inventory_fn then
|
||||||
|
inventory = get_inventory_fn(node_pos)
|
||||||
|
if not inventory then
|
||||||
|
minetest.log("error","No inventory from api get_inventory function: " ..
|
||||||
|
target_node.name .. " on " .. vector.to_string(node_pos))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
inventory = minetest.get_meta(node_pos):get_inventory()
|
||||||
|
end
|
||||||
|
return inventory
|
||||||
|
end
|
||||||
|
|
||||||
-- Used to remove items from the target block and put it into the hopper's inventory
|
-- Used to remove items from the target block and put it into the hopper's inventory
|
||||||
hopper.take_item_from = function(hopper_pos, target_pos, target_node, target_inv_info)
|
hopper.take_item_from = function(hopper_pos, target_pos, target_node, target_inv_info)
|
||||||
local target_def = minetest.registered_nodes[target_node.name]
|
local target_def = minetest.registered_nodes[target_node.name]
|
||||||
@ -76,26 +92,18 @@ hopper.take_item_from = function(hopper_pos, target_pos, target_node, target_inv
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local target_inv_name = target_inv_info["inventory_name"]
|
|
||||||
local target_get_inv = target_inv_info["get_inventory"]
|
|
||||||
|
|
||||||
--hopper inventory
|
--hopper inventory
|
||||||
local hopper_meta = minetest.get_meta(hopper_pos)
|
local hopper_meta = minetest.get_meta(hopper_pos)
|
||||||
local hopper_inv = hopper_meta:get_inventory()
|
local hopper_inv = hopper_meta:get_inventory()
|
||||||
local placer = get_placer(hopper_meta:get_string("placer"))
|
local placer = get_placer(hopper_meta:get_string("placer"))
|
||||||
|
|
||||||
--source inventory
|
--source inventory
|
||||||
local target_inv
|
local target_inv_name = target_inv_info.inventory_name
|
||||||
if target_get_inv then
|
local target_inv = get_container_inventory(target_pos, target_inv_info)
|
||||||
target_inv = target_get_inv(target_pos)
|
|
||||||
if not target_inv then
|
if not target_inv then
|
||||||
minetest.log("error","No inventory from api get_inventory function: " ..
|
|
||||||
target_node.name .. " on " .. vector.to_string(target_pos))
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
else
|
|
||||||
target_inv = minetest.get_meta(target_pos):get_inventory()
|
|
||||||
end
|
|
||||||
local target_inv_size = target_inv:get_size(target_inv_name)
|
local target_inv_size = target_inv:get_size(target_inv_name)
|
||||||
if target_inv:is_empty(target_inv_name) == false then
|
if target_inv:is_empty(target_inv_name) == false then
|
||||||
for i = 1,target_inv_size do
|
for i = 1,target_inv_size do
|
||||||
@ -144,20 +152,12 @@ hopper.send_item_to = function(hopper_pos, target_pos, target_node, target_inv_i
|
|||||||
local hopper_inv_size = hopper_inv:get_size("main")
|
local hopper_inv_size = hopper_inv:get_size("main")
|
||||||
local placer = get_placer(hopper_meta:get_string("placer"))
|
local placer = get_placer(hopper_meta:get_string("placer"))
|
||||||
|
|
||||||
--target inventory
|
--source inventory
|
||||||
local target_inv_name = target_inv_info["inventory_name"]
|
local target_inv_name = target_inv_info.inventory_name
|
||||||
local target_get_inv = target_inv_info["get_inventory"]
|
local target_inv = get_container_inventory(target_pos, target_inv_info)
|
||||||
local target_inv
|
|
||||||
if target_get_inv then
|
|
||||||
target_inv = target_get_inv(target_pos)
|
|
||||||
if not target_inv then
|
if not target_inv then
|
||||||
minetest.log("error","No inventory from api get_inventory function: " ..
|
|
||||||
target_node.name .. " on " .. vector.to_string(target_pos))
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
else
|
|
||||||
target_inv = minetest.get_meta(target_pos):get_inventory()
|
|
||||||
end
|
|
||||||
|
|
||||||
for i = 1,hopper_inv_size do
|
for i = 1,hopper_inv_size do
|
||||||
local stack = hopper_inv:get_stack("main", i)
|
local stack = hopper_inv:get_stack("main", i)
|
||||||
|
Loading…
Reference in New Issue
Block a user