1
0
mirror of https://github.com/Uberi/Minetest-WorldEdit.git synced 2025-06-28 14:16:18 +02:00

Add //homogenize, //lua, and //luatransform commands, as well as their documentation.

This commit is contained in:
Anthony Zhang
2013-01-12 18:20:41 -05:00
parent c27ab877f1
commit e2f1c4ef17
5 changed files with 138 additions and 8 deletions

43
worldedit/code.lua Normal file
View File

@ -0,0 +1,43 @@
worldedit = worldedit or {}
--executes `code` as a Lua chunk in the global namespace, returning an error if the code fails or nil otherwise
worldedit.lua = function(code)
local operation, message = loadstring(code)
if operation == nil then --code parsing failed
return message
end
local status, message = pcall(operation)
if status == nil then --operation failed
return message
end
return nil
end
--executes `code` as a Lua chunk in the global namespace with the variable pos available, for each node in a region defined by positions `pos1` and `pos2`, returning an error if the code fails or nil otherwise
worldedit.luatransform = function(pos1, pos2, code)
local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
local factory, message = loadstring("return function(pos) " .. code .. " end")
if factory == nil then --code parsing failed
return message
end
local operation = factory()
local pos = {x=pos1.x, y=0, z=0}
while pos.x <= pos2.x do
pos.y = pos1.y
while pos.y <= pos2.y do
pos.z = pos1.z
while pos.z <= pos2.z do
local status, message = pcall(operation, pos)
if status == nil then --operation failed
return message
end
pos.z = pos.z + 1
end
pos.y = pos.y + 1
end
pos.x = pos.x + 1
end
return nil
end

View File

@ -1,4 +1,6 @@
dofile(minetest.get_modpath("worldedit") .. "/manipulations.lua")
dofile(minetest.get_modpath("worldedit") .. "/primitives.lua")
dofile(minetest.get_modpath("worldedit") .. "/visualization.lua")
dofile(minetest.get_modpath("worldedit") .. "/serialization.lua")
local path = minetest.get_modpath("worldedit")
dofile(path .. "/manipulations.lua")
dofile(path .. "/primitives.lua")
dofile(path .. "/visualization.lua")
dofile(path .. "/serialization.lua")
dofile(path .. "/code.lua")