-- for lazy programmers local S = function(pos) if pos then return minetest.pos_to_string(pos) end end local P = minetest.string_to_pos local M = minetest.get_meta local Tube = tubelib.Tube local TubesTranslation = { ["tubelib:tube1"] = {[0]= {12, "S"}, {21, "S"}, {12, "S"}, {21, "S"}, }, ["tubelib:tube2"] = {[0]= { 4, "S"}, { 4, "S"}, { 4, "S"}, { 4, "S"}, }, ["tubelib:tube3"] = {[0]= { 5, "A"}, {14, "A"}, {11, "A"}, { 7, "A"}, }, ["tubelib:tube4"] = {[0]= { 0, "A"}, {15, "A"}, { 8, "A"}, { 3, "A"}, }, ["tubelib:tube5"] = {[0]= {20, "A"}, {13, "A"}, {10, "A"}, {19, "A"}, }, } minetest.register_lbm({ label = "[Tubelib] tubes migration", name = "tubelib:migrate", nodenames = { "tubelib:tube1", "tubelib:tube2", "tubelib:tube3", "tubelib:tube4", "tubelib:tube5", "tubelib_addons3:teleporter", }, run_at_every_load = true, action = function(pos, node) if node.name == "tubelib_addons3:teleporter" then local meta = M(pos) local peer = meta:get_string("peer") if peer ~= "" then meta:set_string("tele_pos", peer) local peer_pos = P(peer) local _,node = Tube:get_node(peer_pos) local tube_dir = ((3 + (node.param2 % 4)) % 4) + 1 --print("migrate "..node.name.." at "..S(pos)) meta:set_string("peer", nil) if tube_dir then meta:set_int("tube_dir", tube_dir) end tube_dir = Tube:get_primary_dir(pos) Tube:tool_repair_tube(Tube:get_pos(pos, tube_dir)) end else local items = TubesTranslation[node.name][node.param2] if items then --print("migrate "..node.name.." at "..S(pos)) local param2, ntype = items[1], items[2] minetest.set_node(pos, {name = "tubelib:tube"..ntype, param2 = param2}) end end end }) -- legacy tube, to be converted after placed minetest.register_node("tubelib:tube1", { description = "Tubelib Tube (old)", tiles = { -- Top, base, right, left, front, back "tubelib_tube.png^tubelib_defect.png^[transformR90", "tubelib_tube.png^tubelib_defect.png^[transformR90", "tubelib_tube.png^tubelib_defect.png", "tubelib_tube.png^tubelib_defect.png", "tubelib_hole.png", "tubelib_hole.png", }, after_place_node = function(pos, placer, itemstack, pointed_thing) if not Tube:after_place_tube(pos, placer, pointed_thing) then minetest.remove_node(pos) return true end return false end, after_dig_node = function(pos, oldnode, oldmetadata, digger) Tube:after_dig_tube(pos, oldnode, oldmetadata) end, paramtype2 = "facedir", drawtype = "nodebox", node_box = { type = "fixed", fixed = { {-2/8, -2/8, -4/8, 2/8, 2/8, 4/8}, }, }, selection_box = { type = "fixed", fixed = { -1/4, -1/4, -1/2, 1/4, 1/4, 1/2 }, }, collision_box = { type = "fixed", fixed = { -1/4, -1/4, -1/2, 1/4, 1/4, 1/2 }, }, on_rotate = screwdriver.disallow, paramtype = "light", sunlight_propagates = true, is_ground_content = false, groups = {choppy=2, cracky=3, stone=1, not_in_creative_inventory=1}, sounds = default.node_sound_wood_defaults(), }) minetest.register_craft({ type = "shapeless", output = "tubelib:tubeS", recipe = {"tubelib:tube1"}, })