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 57: | Line 57: | ||
! Status | ! Status | ||
|- | |- | ||
− | |<source enclose="none">vector.line([pos, dir[, range]])</source> | + | |<source enclose="none">vector.line([pos, dir[, range][, alt]])</source> |
| table of [[vector]]s | | table of [[vector]]s | ||
| dir can be following: | | dir can be following: | ||
* a direction | * a direction | ||
* a [[position]] (range not needed) | * a [[position]] (range not needed) | ||
+ | if alt then the old path calculation is used | ||
| works | | works | ||
|- | |- | ||
Line 77: | Line 78: | ||
* returns sth like {{0,0}, {0,1}} | * returns sth like {{0,0}, {0,1}} | ||
* used for a 2d line | * used for a 2d line | ||
+ | | works | ||
+ | |- | ||
+ | |<source enclose="none">vector.threeline(x, y, z)</source> | ||
+ | | table | ||
+ | | | ||
+ | * returns sth like {{0,0,0}, {0,1,0}} | ||
+ | * used for a 3d line | ||
+ | * x, y and z should be round | ||
| works | | works | ||
|- | |- |
Revision as of 15:21, 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 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 |