Drop upgrade items in the after_dig_node handler instead of can_dig
This fixes an item duplication bug triggered by using a screwdriver on an upgraded machine
| | |
| | | }, |
| | | technic_run = run, |
| | | after_place_node = pipeworks.after_place, |
| | | after_dig_node = pipeworks.after_dig |
| | | after_dig_node = technic.machine_after_dig_node |
| | | }) |
| | | |
| | | technic.register_machine("MV", "technic:tool_workshop", technic.receiver) |
| | |
| | | allow_metadata_inventory_move = technic.machine_inventory_move, |
| | | technic_run = run, |
| | | after_place_node = tube and pipeworks.after_place, |
| | | after_dig_node = tube and pipeworks.after_dig |
| | | after_dig_node = technic.machine_after_dig_node |
| | | }) |
| | | end |
| | | |
| | |
| | | S("Machine cannot be removed because it is not empty")) |
| | | end |
| | | return false |
| | | else |
| | | if not inv:is_empty("upgrade1") then |
| | | minetest.item_drop(inv:get_stack("upgrade1", 1), "", pos) |
| | | end |
| | | |
| | | return true |
| | | end |
| | | |
| | | function technic.machine_after_dig_node(pos, oldnode, oldmetadata, player) |
| | | if oldmetadata.inventory then |
| | | if oldmetadata.inventory.upgrade1 and oldmetadata.inventory.upgrade1[1] then |
| | | local stack = ItemStack(oldmetadata.inventory.upgrade1[1]) |
| | | if not stack:is_empty() then |
| | | minetest.item_drop(stack, "", pos) |
| | | end |
| | | end |
| | | if not inv:is_empty("upgrade2") then |
| | | minetest.item_drop(inv:get_stack("upgrade2", 1), "", pos) |
| | | if oldmetadata.inventory.upgrade2 and oldmetadata.inventory.upgrade2[1] then |
| | | local stack = ItemStack(oldmetadata.inventory.upgrade2[1]) |
| | | if not stack:is_empty() then |
| | | minetest.item_drop(stack, "", pos) |
| | | end |
| | | end |
| | | return true |
| | | end |
| | | |
| | | if minetest.registered_nodes[oldnode.name].tube then |
| | | pipeworks.after_dig(pos, oldnode, oldmetadata, player) |
| | | end |
| | | end |
| | | |
| | |
| | | allow_metadata_inventory_move = technic.machine_inventory_move, |
| | | technic_run = run, |
| | | after_place_node = tube and pipeworks.after_place, |
| | | after_dig_node = tube and pipeworks.after_dig |
| | | after_dig_node = technic.machine_after_dig_node |
| | | }) |
| | | |
| | | minetest.register_node("technic:"..ltier.."_generator_active", { |
| | |
| | | allow_metadata_inventory_move = technic.machine_inventory_move, |
| | | technic_run = run, |
| | | after_place_node = tube and pipeworks.after_place, |
| | | after_dig_node = tube and pipeworks.after_dig |
| | | after_dig_node = technic.machine_after_dig_node |
| | | }) |
| | | |
| | | minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{ |