Difference between revisions of "minetest.on place"

From Minetest Developer Wiki
Jump to navigation Jump to search
(move minetest.on_place)
 
Line 1: Line 1:
 
+
#REDIRECT [[User:Hybrid_Dog#minetest.on_place]]
 
 
== Syntax ==
 
<source>minetest.on_place(nodename, func)</source>
 
 
 
== Description ==
 
This changes on_place of a node after it was defined.<br/>
 
It is not implemented into minetest but can be added via mod(s):
 
<source>minetest.on_place = minetest.on_place or function(name, func)
 
local previous_on_place = minetest.registered_nodes[name].on_place
 
minetest.override_item(name, {
 
on_place = function(itemstack, placer, pointed_thing)
 
if func(itemstack, placer, pointed_thing) then
 
return previous_on_place(itemstack, placer, pointed_thing)
 
end
 
end
 
})
 
end</source>
 
 
 
=== nodename ===
 
The name of the node which should become changed
 
 
 
=== func ===
 
should return true if the node becomes set
 
<source>function(itemstack, placer, pointed_thing)</source>
 
 
 
== Example ==
 
<source>minetest.on_place("hydro:growlamp", function(itemstack, placer, pointed_thing)
 
if not pointed_thing then
 
return
 
end
 
local pos = minetest.get_pointed_thing_position(pointed_thing, true)
 
if not pos then
 
return
 
end
 
local nd_above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
 
local nd_above_info = minetest.registered_nodes[nd_above]
 
if nd_above == "air"
 
or nd_above == "hydro:growlamp"
 
or not nd_above_info.walkable
 
or nd_above_info.buildable_to then
 
return
 
end
 
return true
 
end)</source>
 
 
 
[[Category:Methods]]
 

Latest revision as of 16:52, 27 May 2014