diff --git a/mcl_barrels.lua b/mcl_barrels.lua index 478b251..423dab3 100644 --- a/mcl_barrels.lua +++ b/mcl_barrels.lua @@ -15,39 +15,47 @@ groups_open["not_in_creative_inventory"] = 1 -- Override Construction -local override_barrel = { - tiles = {"mcl_barrels_barrel_top.png^[transformR270", - "mcl_barrels_barrel_bottom.png"..tube_entry, - "mcl_barrels_barrel_side.png"..tube_entry}, - after_place_node = function(pos, placer, itemstack, pointed_thing) - old_barrel.after_place_node(pos, placer, itemstack, pointed_thing) - pipeworks.after_place(pos, placer, itemstack, pointed_thing) - end, - tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("main", 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("main", stack) - end, - input_inventory = "main", - connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1} - }, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - old_barrel.after_dig_node(pos, oldnode, oldmetadata, digger) - pipeworks.after_dig(pos) - end, - groups = table.copy(old_barrel.groups), - on_rotate = pipeworks.on_rotate +local override_barrel = {} + +override_barrel.tiles = { + "mcl_barrels_barrel_top.png^[transformR270", + "mcl_barrels_barrel_bottom.png"..tube_entry, + "mcl_barrels_barrel_side.png"..tube_entry } +override_barrel.after_place_node = function(pos, placer, itemstack, pointed_thing) + old_barrel.after_place_node(pos, placer, itemstack, pointed_thing) + pipeworks.after_place(pos, placer, itemstack, pointed_thing) +end + +override_barrel.tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("main", 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("main", stack) + end, + input_inventory = "main", + connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1} +} + +override_barrel.after_dig_node = function(pos, oldnode, oldmetadata, digger) + old_barrel.after_dig_node(pos, oldnode, oldmetadata, digger) + pipeworks.after_dig(pos) +end + +override_barrel.groups = table.copy(old_barrel.groups) + +override_barrel.on_rotate = pipeworks.on_rotate + + local override_barrel_open = table.copy(override_barrel) override_barrel_open.tiles = { diff --git a/mcl_furnaces.lua b/mcl_furnaces.lua index 4428d11..fb5397e 100644 --- a/mcl_furnaces.lua +++ b/mcl_furnaces.lua @@ -20,65 +20,71 @@ local function give_xp(pos, player) end end -local override = { - tiles = { - "default_furnace_top.png"..tube_entry, - "default_furnace_bottom.png"..tube_entry, - "default_furnace_side.png"..tube_entry, - "default_furnace_side.png"..tube_entry, - "default_furnace_side.png"..tube_entry, - "default_furnace_front.png" - }, - groups = groups, - tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local timer = minetest.get_node_timer(pos) - if not timer:is_started() then - timer:start(1.0) - end - if direction.y == 1 then - return inv:add_item("fuel", stack) - else - return inv:add_item("src", stack) - end - end, - can_insert = function(pos,node,stack,direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if direction.y == 1 then - return inv:room_for_item("fuel", stack) - else - if meta:get_int("split_material_stacks") == 1 then - stack = stack:peek_item(1) - end - return inv:room_for_item("src", stack) - end - end, - input_inventory = "dst", - connect_sides = {left = 1, right = 1, back = 1, bottom = 1, top = 1} - }, - after_place_node = function(pos, placer, itemstack, pointed_thing) - pipeworks.after_place(pos, placer, itemstack, pointed_thing) - end, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - old_furnace.after_dig_node(pos, oldnode, oldmetadata, digger) - pipeworks.after_dig(pos) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - if listname == "dst" then - if stack:get_name() == "mcl_core:iron_ingot" then - awards.unlock(player:get_player_name(), "mcl:acquireIron") - elseif stack:get_name() == "mcl_fishing:fish_cooked" then - awards.unlock(player:get_player_name(), "mcl:cookFish") - end - give_xp(pos, player) +local override = {} + +override.tiles = { + "default_furnace_top.png"..tube_entry, + "default_furnace_bottom.png"..tube_entry, + "default_furnace_side.png"..tube_entry, + "default_furnace_side.png"..tube_entry, + "default_furnace_side.png"..tube_entry, + "default_furnace_front.png" +} + +override.groups = groups + +override.tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if not timer:is_started() then + timer:start(1.0) + end + if direction.y == 1 then + return inv:add_item("fuel", stack) + else + return inv:add_item("src", stack) end end, - on_rotate = pipeworks.on_rotate + can_insert = function(pos,node,stack,direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if direction.y == 1 then + return inv:room_for_item("fuel", stack) + else + if meta:get_int("split_material_stacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("src", stack) + end + end, + input_inventory = "dst", + connect_sides = {left = 1, right = 1, back = 1, bottom = 1, top = 1} } +override.after_place_node = function(pos, placer, itemstack, pointed_thing) + pipeworks.after_place(pos, placer, itemstack, pointed_thing) +end + +override.after_dig_node = function(pos, oldnode, oldmetadata, digger) + old_furnace.after_dig_node(pos, oldnode, oldmetadata, digger) + pipeworks.after_dig(pos) +end + +override.on_metadata_inventory_take = function(pos, listname, index, stack, player) + if listname == "dst" then + if stack:get_name() == "mcl_core:iron_ingot" then + awards.unlock(player:get_player_name(), "mcl:acquireIron") + elseif stack:get_name() == "mcl_fishing:fish_cooked" then + awards.unlock(player:get_player_name(), "mcl:cookFish") + end + give_xp(pos, player) + end +end + +override.on_rotate = pipeworks.on_rotate + local override_active = table.copy(override)