mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-09-17 18:38:33 +02:00
33 lines
1.8 KiB
Lua
33 lines
1.8 KiB
Lua
-- ██████ ██████ ██████ ███ ██ ███████ ██████ ███████ ███████ ████████
|
|
-- ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██
|
|
-- ██ ██ ██ ██████ ██ ██ ██ █████ ██████ ███████ █████ ██
|
|
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
-- ██████ ██████ ██ ██ ██ ████ ███████ ██ ██ ███████ ███████ ██
|
|
|
|
--- Puts a node at each corner of selection box.
|
|
-- @param {Position} pos1 The 1st position defining the WorldEdit selection
|
|
-- @param {Position} pos2 The 2nd positioon defining the WorldEdit selection
|
|
-- @param {string} node Name of the node to place
|
|
function worldeditadditions.corner_set(pos1,pos2,node)
|
|
local node_id_replace = minetest.get_content_id(node)
|
|
|
|
-- Fetch the nodes in the specified area
|
|
local manip, area = worldedit.manip_helpers.init(pos1, pos2)
|
|
local data = manip:get_data()
|
|
|
|
-- z y x is the preferred loop order (because CPU cache I'd guess, since then we're iterating linearly through the data array)
|
|
local counts = { replaced = 0 }
|
|
for k,z in pairs({pos1.z,pos2.z}) do
|
|
for k,y in pairs({pos1.y,pos2.y}) do
|
|
for k,x in pairs({pos1.x,pos2.x}) do
|
|
data[area:index(x, y, z)] = node_id_replace
|
|
counts.replaced = counts.replaced + 1
|
|
end
|
|
end
|
|
end
|
|
-- Save the modified nodes back to disk & return
|
|
worldedit.manip_helpers.finish(manip, data)
|
|
|
|
return true, counts.replaced
|
|
end
|