diff --git a/depends.txt b/depends.txt index 4167e2f..383d932 100644 --- a/depends.txt +++ b/depends.txt @@ -1,4 +1,6 @@ default currency? bitchange? -wrench? \ No newline at end of file +wrench? +pipeworks? +tubelib? diff --git a/init.lua b/init.lua index e8c7c5c..df1c299 100644 --- a/init.lua +++ b/init.lua @@ -23,6 +23,7 @@ else dofile(modpath .. "/shop_functions.lua") dofile(modpath .. "/shop.lua") end +dofile(modpath .. "/pipes.lua") if has_currency then local new_groups = table.copy(minetest.registered_nodes["currency:shop"].groups) diff --git a/mod.conf b/mod.conf index 3f4a198..7097a74 100644 --- a/mod.conf +++ b/mod.conf @@ -1,3 +1,4 @@ name = exchange_shop +description = An improved currency-compatible exchange shop depends = default -optional_depends = currency, bitchange, wrench +optional_depends = currency, bitchange, wrench, pipeworks, tubelib diff --git a/pipes.lua b/pipes.lua new file mode 100644 index 0000000..d73ca74 --- /dev/null +++ b/pipes.lua @@ -0,0 +1,38 @@ +if minetest.get_modpath("pipeworks") then + minetest.override_item(exchange_shop.shopname, { + groups = {choppy=2, oddly_breakable_by_hand=2, + tubedevice=1, tubedevice_receiver=1}, + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("stock", stack) + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:room_for_item("stock", stack) + end, + input_inventory = "custm", + connect_sides = {left=1, right=1, back=1, top=1, bottom=1} + } + }) +end + +if minetest.get_modpath("tubelib") then + tubelib.register_node(exchange_shop.shopname, {}, { + on_pull_item = function(pos, side) + local meta = minetest.get_meta(pos) + return tubelib.get_item(meta, "custm") + end, + on_push_item = function(pos, side, item) + local meta = minetest.get_meta(pos) + return tubelib.put_item(meta, "stock", item) + end, + on_unpull_item = function(pos, side, item) + local meta = minetest.get_meta(pos) + return tubelib.put_item(meta, "stock", item) + end, + }) + +end diff --git a/shop.lua b/shop.lua index 4b8e5ff..2117d89 100755 --- a/shop.lua +++ b/shop.lua @@ -165,22 +165,7 @@ minetest.register_node(exchange_shop.shopname, { "shop_side.png", "shop_front.png" }, paramtype2 = "facedir", - groups = {choppy=2, oddly_breakable_by_hand=2, - tubedevice=1, tubedevice_receiver=1}, - tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("stock", stack) - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:room_for_item("stock", stack) - end, - input_inventory = "custm", - connect_sides = {left=1, right=1, back=1, top=1, bottom=1} - }, + groups = {choppy=2, oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer) local meta = minetest.get_meta(pos)