From d661525db2eaac29b564229daba8c84c27eeb194 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sat, 22 Aug 2020 19:42:36 +0200 Subject: [PATCH] Add support for digtron and protector:chest --- basic_machines/legacy_nodes.lua | 10 ++- basic_machines/mods_support.lua | 117 ++++++++++++++++++++++++++++++++ init.lua | 1 + 3 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 basic_machines/mods_support.lua diff --git a/basic_machines/legacy_nodes.lua b/basic_machines/legacy_nodes.lua index c2e3aa9..a949afd 100644 --- a/basic_machines/legacy_nodes.lua +++ b/basic_machines/legacy_nodes.lua @@ -1,16 +1,14 @@ --[[ - Tube Library - ============ + TechAge + ======= - Copyright (C) 2017 Joachim Stolberg + Copyright (C) 2019-2020 Joachim Stolberg GPL v3 See LICENSE.txt for more information - - legacy_nodes.lua: - Tubelib support for chests and furnace + Tube support for default chests and furnace ]]-- diff --git a/basic_machines/mods_support.lua b/basic_machines/mods_support.lua new file mode 100644 index 0000000..ede4e25 --- /dev/null +++ b/basic_machines/mods_support.lua @@ -0,0 +1,117 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2019-2020 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + Tube support for digtron and protector chests + +]]-- + + +-- for lazy programmers +local M = minetest.get_meta + +local CacheForFuelNodeNames = {} + +local function is_fuel(stack) + local name = stack:get_name() + if CacheForFuelNodeNames[name] then + return true + end + if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then + CacheForFuelNodeNames[name] = true + end + return CacheForFuelNodeNames[name] +end + +------------------------------------------------------------------------------ +-- digtron +------------------------------------------------------------------------------ + +techage.register_node({"digtron:inventory"}, { + on_pull_item = function(pos, in_dir, num) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.get_items(pos, inv, "main", num) + end, + on_push_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "main", stack) + end, + on_unpull_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "main", stack) + end, +}) + +techage.register_node({"digtron:fuelstore"}, { + on_pull_item = function(pos, in_dir, num) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.get_items(pos, inv, "fuel", num) + end, + on_push_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "fuel", stack) + end, + on_unpull_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "fuel", stack) + end, +}) + +techage.register_node({"digtron:combined_storage"}, { + on_pull_item = function(pos, in_dir, num) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.get_items(pos, inv, "main", num) + end, + on_push_item = function(pos, side, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + minetest.get_node_timer(pos):start(1.0) + if is_fuel(stack) then + return techage.put_items(inv, "fuel", stack) + else + return techage.put_items(inv, "main", stack) + end + end, + on_unpull_item = function(pos, side, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "main", stack) + end, +}) + +------------------------------------------------------------------------------ +-- protector +------------------------------------------------------------------------------ + +techage.register_node({"protector:chest"}, { + on_pull_item = function(pos, in_dir, num) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.get_items(pos, inv, "main", num) + end, + on_push_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "main", stack) + end, + on_unpull_item = function(pos, in_dir, stack) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return techage.put_items(inv, "main", stack) + end, +}) + + diff --git a/init.lua b/init.lua index ef8b2a1..f7ac89a 100644 --- a/init.lua +++ b/init.lua @@ -144,6 +144,7 @@ dofile(MP.."/basic_machines/consumer.lua") -- consumer base model dofile(MP.."/basic_machines/source.lua") dofile(MP.."/basic_machines/pusher.lua") dofile(MP.."/basic_machines/legacy_nodes.lua") +dofile(MP.."/basic_machines/mods_support.lua") dofile(MP.."/basic_machines/grinder.lua") dofile(MP.."/basic_machines/distributor.lua") dofile(MP.."/basic_machines/gravelsieve.lua")