From 1a45ad19d4fa627e147bd385665e37942f6147fb Mon Sep 17 00:00:00 2001 From: Serhiy Zahoriya <serhiy.int@gmail.com> Date: Sat, 11 Jan 2020 22:06:24 +0100 Subject: [PATCH] Alloy furnace: Accept only unique ItemStacks from tubes (#523) --- technic/machines/register/machine_base.lua | 45 +++++++++++++++++++++++++++++---------------- 1 files changed, 29 insertions(+), 16 deletions(-) diff --git a/technic/machines/register/machine_base.lua b/technic/machines/register/machine_base.lua index 15fb8ea..2965ba5 100644 --- a/technic/machines/register/machine_base.lua +++ b/technic/machines/register/machine_base.lua @@ -4,22 +4,26 @@ local fs_helpers = pipeworks.fs_helpers local tube_entry = "^pipeworks_tube_connection_metallic.png" -local tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("src", stack) - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if meta:get_int("splitstacks") == 1 then - stack = stack:peek_item(1) - end - return inv:room_for_item("src", stack) - end, - connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, -} +function technic.default_can_insert(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int("splitstacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("src", stack) +end + +function technic.new_default_tube() + return { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("src", stack) + end, + can_insert = technic.default_can_insert, + connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, + } +end local connect_default = {"bottom", "back", "left", "right"} @@ -62,6 +66,14 @@ "listring[current_player;main]".. "listring[current_name;upgrade2]".. "listring[current_player;main]" + end + + local tube = technic.new_default_tube() + if data.can_insert then + tube.can_insert = data.can_insert + end + if data.insert_object then + tube.insert_object = data.insert_object end local run = function(pos, node) @@ -144,6 +156,7 @@ if ltier == "lv" then tentry = "" end + minetest.register_node("technic:"..ltier.."_"..machine_name, { description = machine_desc:format(tier), tiles = { -- Gitblit v1.8.0