From 7977776b4a8067ea513d95ab2b0d699456596209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20P=C3=A9rez-Cerezo?= Date: Mon, 21 Oct 2019 16:36:35 +0200 Subject: Changes for linetrack Allows defining a suitable substrate for tracks, and liquid pointable tracks --- advtrains/trackplacer.lua | 21 ++++++++++++++------- advtrains/tracks.lua | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/advtrains/trackplacer.lua b/advtrains/trackplacer.lua index 9f5fadd..db65cd9 100644 --- a/advtrains/trackplacer.lua +++ b/advtrains/trackplacer.lua @@ -262,12 +262,13 @@ function tp.placetrack(pos, nnpref, placer, itemstack, pointed_thing, yaw) end -function tp.register_track_placer(nnprefix, imgprefix, dispname) +function tp.register_track_placer(nnprefix, imgprefix, dispname, def) minetest.register_craftitem(":"..nnprefix.."_placer",{ description = dispname, inventory_image = imgprefix.."_placer.png", wield_image = imgprefix.."_placer.png", groups={advtrains_trackplacer=1, digtron_on_place=1}, + liquids_pointable = def.liquids_pointable, on_place = function(itemstack, placer, pointed_thing) return advtrains.pcall(function() local name = placer:get_player_name() @@ -280,13 +281,19 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname) if not advtrains.check_track_protection(pos, name) then return itemstack, false end - if minetest.registered_nodes[minetest.get_node(pos).name] and minetest.registered_nodes[minetest.get_node(pos).name].buildable_to - and minetest.registered_nodes[minetest.get_node(upos).name] and minetest.registered_nodes[minetest.get_node(upos).name].walkable then + if minetest.registered_nodes[minetest.get_node(pos).name] and minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then + if def.suitable_substrate then + s = def.suitable_substrate(upos) + else + s = minetest.registered_nodes[minetest.get_node(upos).name] and minetest.registered_nodes[minetest.get_node(upos).name].walkable + end + if s then -- minetest.chat_send_all(nnprefix) - local yaw = placer:get_look_horizontal() - tp.placetrack(pos, nnprefix, placer, itemstack, pointed_thing, yaw) - if not advtrains.is_creative(name) then - itemstack:take_item() + local yaw = placer:get_look_horizontal() + tp.placetrack(pos, nnprefix, placer, itemstack, pointed_thing, yaw) + if not advtrains.is_creative(name) then + itemstack:take_item() + end end end end diff --git a/advtrains/tracks.lua b/advtrains/tracks.lua index 1c0b36b..4475cb0 100644 --- a/advtrains/tracks.lua +++ b/advtrains/tracks.lua @@ -244,7 +244,7 @@ Depending on the number of connections: function advtrains.register_tracks(tracktype, def, preset) advtrains.trackplacer.register_tracktype(def.nodename_prefix, preset.tpdefault) if preset.regtp then - advtrains.trackplacer.register_track_placer(def.nodename_prefix, def.texture_prefix, def.description) + advtrains.trackplacer.register_track_placer(def.nodename_prefix, def.texture_prefix, def.description, def) end if preset.regsp then advtrains.slope.register_placer(def, preset) -- cgit v1.2.3