obl3pplifp
2019-06-09 8a987bb361bb48f35048167c16abb8a72cdfa13c
Add tubelib support to technic chests (#498)

1 files added
2 files modified
43 ■■■■■ changed files
technic_chests/depends.txt 1 ●●●● patch | view | raw | blame | history
technic_chests/mod.conf 3 ●●●●● patch | view | raw | blame | history
technic_chests/register.lua 39 ●●●●● patch | view | raw | blame | history
technic_chests/depends.txt
@@ -4,3 +4,4 @@
moreores?
pipeworks?
intllib?
tubelib?
technic_chests/mod.conf
New file
@@ -0,0 +1,3 @@
name=technic_chests
depends=default,basic_materials
optional_depends=moreblocks,moreores,pipeworks,intllib,tubelib
technic_chests/register.lua
@@ -2,6 +2,7 @@
local pipeworks = rawget(_G, "pipeworks")
local fs_helpers = rawget(_G, "fs_helpers")
local tubelib_exists = minetest.global_exists("tubelib")
local allow_label = ""
local tube_entry = ""
@@ -330,11 +331,45 @@
    return def
end
local _TUBELIB_CALLBACKS = {
    on_pull_item = function(pos, side, player_name)
        if not minetest.is_protected(pos, player_name) then
            local inv = minetest.get_meta(pos):get_inventory()
            for _, stack in pairs(inv:get_list("main")) do
                if not stack:is_empty() then
                    return inv:remove_item("main", stack:get_name())
                end
            end
        end
        return nil
    end,
    on_push_item = function(pos, side, item, player_name)
        local inv = minetest.get_meta(pos):get_inventory()
        if inv:room_for_item("main", item) then
            inv:add_item("main", item)
            return true
        end
        return false
    end,
    on_unpull_item = function(pos, side, item, player_name)
        local inv = minetest.get_meta(pos):get_inventory()
        if inv:room_for_item("main", item) then
            inv:add_item("main", item)
            return true
        end
        return false
    end,
}
function technic.chests:register(name, data)
    local def = technic.chests:definition(name, data)
    local nn = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest"
    minetest.register_node(":"..nn, def)
    if tubelib_exists then
        tubelib.register_node(nn, {}, _TUBELIB_CALLBACKS)
    end
    if data.color then
        local mk_front
@@ -353,8 +388,10 @@
            colordef.groups = self.groups_noinv
            colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") }
            minetest.register_node(":"..nn..postfix, colordef)
            if tubelib_exists then
                tubelib.register_node(nn..postfix, {}, _TUBELIB_CALLBACKS)
        end
    end
    end
end