Difference between revisions of "User:Hybrid Dog"
Jump to navigation
Jump to search
Hybrid Dog (talk | contribs) m (→vector_extras) |
Hybrid Dog (talk | contribs) m (→vector_extras) |
||
Line 71: | Line 71: | ||
* needed for not round positions | * needed for not round positions | ||
* try using [[minetest.line_of_sight]] instead | * try using [[minetest.line_of_sight]] instead | ||
− | | works but slow | + | | works but<br/>old and slow |
|- | |- | ||
|<source enclose="none">vector.twoline(x, y)</source> | |<source enclose="none">vector.twoline(x, y)</source> |
Revision as of 16:01, 14 September 2014
minetest.on_place
Syntax
minetest.on_place(nodename, func)
Description
This changes on_place of a node after it was defined.
It is not implemented into minetest but can be added via mod(s):
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
nodename
The name of the node which should become changed
func
should return true if the node becomes set
function(itemstack, placer, pointed_thing)
Example
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)
Mods
vector_extras
Function | Return value | Comments | Status |
---|---|---|---|
vector.line([pos, dir[, range][, alt]])
|
table of vectors | dir can be following:
if alt then the old path calculation is used |
works |
vector.fine_line([pos, dir[, range], scale])
|
table of vectors |
|
works but old and slow |
vector.twoline(x, y)
|
table |
|
works |
vector.threeline(x, y, z)
|
table |
|
works |
vector.straightdelay([s, v[, a]])
|
number |
|
works |
vector.sun_dir(t)
|
vector |
|
works |
vector.inside(pos, minp, maxp)
|
bool | returns true if pos is inside or on the corners of minp and maxp | untested |
vector.minmax(p1, p2)
|
vector, vector | the first vector's x, y and z are smaller than the second one's | untested |
vector.move(p1, p2, s)
|
vector |
|
untested |
vector.explosion_table(r)
|
table |
|
works |
vector.circle(r)
|
table of vectors |
|
works |
vector.ring(r)
|
table of vectors |
|
works |
vector.chunkcorner(pos)
|
vector | should return the chunkcorner near pos | could work |