1
0
鏡像自 https://github.com/luanti-org/luanti.git 已同步 2025-11-18 23:55:26 +01:00

Simplify deleteblocks chat command argument parsing

Add optional core.pos_to_string decimal place rounding
Move core.string_to_pos to builtin/common/misc_helpers.lua for consistency
此提交包含在:
kwolekr
2015-01-15 18:03:43 -05:00
父節點 9736548720
當前提交 5aeeb219e3
共有 3 個檔案被更改,包括 44 行新增37 行删除

查看文件

@@ -419,24 +419,18 @@ core.register_chatcommand("deleteblocks", {
p1 = player:getpos()
p2 = p1
else
p1.x, p1.y, p1.z, p2.x, p2.y, p2.z = string.match(param,
"^%(([%d.-]+), *([%d.-]+), *([%d.-]+)%) *%(([%d.-]+), *([%d.-]+), *([%d.-]+)%)$")
p1.x = tonumber(p1.x)
p1.y = tonumber(p1.y)
p1.z = tonumber(p1.z)
p2.x = tonumber(p2.x)
p2.y = tonumber(p2.y)
p2.z = tonumber(p2.z)
local pos1, pos2 = unpack(param:split(") ("))
p1 = core.string_to_pos(pos1 .. ")")
p2 = core.string_to_pos("(" .. pos2)
if p1.x == nil or p1.y == nil or p1.z == nil or
p2.x == nil or p2.y == nil or p2.z == nil then
if p1 == nil or p2 == nil then
return false, "Incorrect area format. Expected: (x1,y1,z1) (x2,y2,z2)"
end
end
if core.delete_area(p1, p2) then
return true, "Successfully cleared area ranging from " ..
core.pos_to_string(p1) .. " to " .. core.pos_to_string(p2)
core.pos_to_string(p1, 1) .. " to " .. core.pos_to_string(p2, 1)
else
return false, "Failed to clear one or more blocks in area"
end

查看文件

@@ -93,30 +93,6 @@ function core.get_node_group(name, group)
return core.get_item_group(name, group)
end
function core.string_to_pos(value)
local p = {}
p.x, p.y, p.z = string.match(value, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
if p.x and p.y and p.z then
p.x = tonumber(p.x)
p.y = tonumber(p.y)
p.z = tonumber(p.z)
return p
end
local p = {}
p.x, p.y, p.z = string.match(value, "^%( *([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+) *%)$")
if p.x and p.y and p.z then
p.x = tonumber(p.x)
p.y = tonumber(p.y)
p.z = tonumber(p.z)
return p
end
return nil
end
assert(core.string_to_pos("10.0, 5, -2").x == 10)
assert(core.string_to_pos("( 10.0, 5, -2)").z == -2)
assert(core.string_to_pos("asd, 5, -2)") == nil)
function core.setting_get_pos(name)
local value = core.setting_get(name)
if not value then