Changes for linetrack

Allows defining a suitable substrate for tracks, and liquid pointable tracks
master
Gabriel Pérez-Cerezo 2019-10-21 16:36:35 +02:00
parent 2d8c13885a
commit 7977776b4a
2 changed files with 15 additions and 8 deletions

View File

@ -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,8 +281,13 @@ 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)
@ -290,6 +296,7 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname)
end
end
end
end
return itemstack, true
end)
end,

View File

@ -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)