diff --git a/releasenotes.md b/releasenotes.md index ee26008..faa2a5a 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -1,6 +1,18 @@ # Release Notes of the ModPack TechPack [techpack] + +## V1.16.1 (2018-09-21) + + +### Additions +- Straight ahead tubes can be placed my means of the "sneak" button + +### Fixes +- Minor tube placing bug fixed + + + ## V1.16 (2018-09-20) ### Changes diff --git a/smartline/icta/formspec.lua b/smartline/icta/formspec.lua index 40b9dbd..e950ffd 100644 --- a/smartline/icta/formspec.lua +++ b/smartline/icta/formspec.lua @@ -217,7 +217,7 @@ end function smartline.formspecNotes(meta) local running = meta:get_int("state") == tubelib.RUNNING local cmnd = running and "stop;Stop" or "start;Start" - local notes = meta:get_string("notes") + local notes = meta:get_string("notes") or "" if notes == "" then notes = "" end notes = minetest.formspec_escape(notes) return SIZE.. diff --git a/tubelib/tubes1.lua b/tubelib/tubes1.lua index f17698d..ee16b23 100644 --- a/tubelib/tubes1.lua +++ b/tubelib/tubes1.lua @@ -58,6 +58,7 @@ end -- Convertion of 'dir' (view from the outside to inside and vs) local Turn180Deg = {3,4,1,2,6,5} +local Turn90Deg = {2,3,4,5,6,1} local Dir2Offset = { {x=0, y=0, z=1}, @@ -227,10 +228,12 @@ local function update_next_tube(dir, pos) local conn1 = is_connected(pos, dir1) or is_known_node(pos, dir1) local conn2 = is_connected(pos, dir2) or is_known_node(pos, dir2) -- already connected or no tube arround? - if conn1 == conn2 then + if (conn1 and conn2) or (not dir1 and not dir2) then return - end - if conn1 then + elseif not conn1 and not conn2 then + dir1 = Turn90Deg[dir1] + dir2 = Turn180Deg[dir1] + elseif conn1 then dir2 = Turn180Deg[dir] else dir1 = Turn180Deg[dir] @@ -267,7 +270,7 @@ local function update_tube(pos, dir) swap_node(pos, node_num, param2) end -function tubelib.update_tubes(pos, dir) +function tubelib.update_tubes(pos, dir, straight_ahead) -- Update all tubes arround the currently placed tube update_next_tube(1, {x=pos.x , y=pos.y , z=pos.z+1}) update_next_tube(2, {x=pos.x+1, y=pos.y , z=pos.z }) @@ -275,8 +278,10 @@ function tubelib.update_tubes(pos, dir) update_next_tube(4, {x=pos.x-1, y=pos.y , z=pos.z }) update_next_tube(5, {x=pos.x , y=pos.y-1, z=pos.z }) update_next_tube(6, {x=pos.x , y=pos.y+1, z=pos.z }) - -- Update the placed tube - update_tube(pos, dir) + if not straight_ahead then + -- Update the placed tube + update_tube(pos, dir) + end return tubelib.delete_meta_data(pos, minetest.get_node(pos)) < MAX_TUBE_LENGTH end diff --git a/tubelib/tubes2.lua b/tubelib/tubes2.lua index 1535056..20e77ca 100644 --- a/tubelib/tubes2.lua +++ b/tubelib/tubes2.lua @@ -174,14 +174,15 @@ for idx,pos in ipairs(DirCorrections) do after_place_node = function(pos, placer, itemstack, pointed_thing) local res local pitch = placer:get_look_pitch() + local straight_ahead = placer:get_player_control().sneak if pitch > 1 then - res = tubelib.update_tubes(pos, 6) + res = tubelib.update_tubes(pos, 6, straight_ahead) elseif pitch < -1 then - res = tubelib.update_tubes(pos, 5) + res = tubelib.update_tubes(pos, 5, straight_ahead) else local dir = placer:get_look_dir() local facedir = minetest.dir_to_facedir(dir) - res = tubelib.update_tubes(pos, facedir + 1) + res = tubelib.update_tubes(pos, facedir + 1, straight_ahead) end if res == false then tubelib.delete_meta_data(pos, minetest.get_node(pos))