Add Digtron compatibility

Override digtron's item-place function to be able to place tracks with digtrons.
master
orwell96 2017-05-22 15:44:25 +02:00
parent 9132c5d996
commit d22b9fb011
4 changed files with 34 additions and 5 deletions

View File

@ -1,2 +1,3 @@
default
mesecons?
mesecons?
digtron?

View File

@ -0,0 +1,25 @@
--digtron.lua
--make tracks placeable by digtrons by overriding the place function.
local old_item_place = digtron.item_place_node
digtron.item_place_node = function(itemstack, placer, place_to, param2)
if minetest.get_item_group(itemstack:get_name(), "advtrains_trackplacer")>0 then
return advtrains.pcall(function()
local def = minetest.registered_items[itemstack:get_name()]
if not def then return itemstack, false end
local pointed_thing = {}
pointed_thing.type = "node"
pointed_thing.above = {x=place_to.x, y=place_to.y, z=place_to.z}
pointed_thing.under = {x=place_to.x, y=place_to.y - 1, z=place_to.z}
--call the on_rightclick callback
local success
itemstack, success = def.on_place(itemstack, placer, pointed_thing)
return itemstack, success
end)
else
return old_item_place(itemstack, placer, place_to, param2)
end
end

View File

@ -121,6 +121,9 @@ dofile(advtrains.modpath.."/misc_nodes.lua")
dofile(advtrains.modpath.."/crafting.lua")
dofile(advtrains.modpath.."/craft_items.lua")
if digtron then
dofile(advtrains.modpath.."/digtron.lua")
end
--load/save

View File

@ -185,19 +185,19 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname)
description = dispname,
inventory_image = imgprefix.."_placer.png",
wield_image = imgprefix.."_placer.png",
groups={},
groups={advtrains_trackplacer=1},
on_place = function(itemstack, placer, pointed_thing)
return advtrains.pcall(function()
local name = placer:get_player_name()
if not name then
return itemstack
return itemstack, false
end
if pointed_thing.type=="node" then
local pos=pointed_thing.above
local upos=vector.subtract(pointed_thing.above, {x=0, y=1, z=0})
if advtrains.is_protected(pos,name) then
minetest.record_protection_violation(pos, name)
return itemstack
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
@ -207,7 +207,7 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname)
end
end
end
return itemstack
return itemstack, true
end)
end,
})