Code: Select all
2018-05-30 17:59:57: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod 'extended_borer_tool' in callback item_OnUse(): /home/user/.minetest/mods/extended_borer_tool/init.lua:56: attempt to perform arithmetic on a nil value
2018-05-30 17:59:57: ERROR[Main]: stack traceback:
2018-05-30 17:59:57: ERROR[Main]: /home/user/.minetest/mods/extended_borer_tool/init.lua:56: in function </home/user/.minetest/mods/extended_borer_tool/init.lua:50>
Code: Select all
tool_formspec = "size[6, 5]" ..
"label[1.5, 0.3;====TUNNEL BORER TOOL====]" ..
"label[-0.1,1.2;Set Length, Height and Width of space that borer tool must dig through]" ..
"field[1, 3;1, 1;length_field;Length:;;]" ..
"field[2.8, 3;1, 1;height_field;Height:;;]" ..
"field[4.6, 3;1, 1;width_field;Width:;;]" ..
"button[1, 3.7;4, 1;submit_data;Submit]"
fields_parameter = {}
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "extended_borer_tool:tool_formspec" then
if fields.name == "submit_data" then
if fields.length_field == nil then
fields_parameter["length"] = "3"
else
fields_parameter["length"] = fields.length_field
end
if fields.height_field == nil then
fields_parameter["height"] = "3"
else
fields_parameter["height"] = fields.height_field
end
if fields.width_field == nil then
fields_parameter["width"] = "3"
else
fields_parameter["width"] = fields.width_field
end
end
end
end)
minetest.register_tool("extended_borer_tool:borer_tool", {
description = "Borer tool",
inventory_image = "borer_tool.png",
tool_capabilities = {
full_punch_interval = 0,
max_drop_level = 0,
uses = {uses=100, leveldiff=0},
max_level = 0,
digging_times = 0,
groupcaps = {
cracky = {uses=100, maxlevel=0, times=0}
}
},
on_place = function (itemstack, placer, pointed_thing)
local playername = placer:get_player_name()
minetest.show_formspec(playername, "extended_borer_tool:tool_formspec", tool_formspec)
end,
on_use = function (itemstack, user, pointed_thing)
if pointed_thing.type == "node" then
amount_of_rows = 0
local pos = pointed_thing.under
--line:56 for row = 1, tonumber(fields_parameter["length"]) * tonumber(fields_parameter["height"]) do
for delete_node = 1, tonumber(fields_parameter["width"]) do
minetest.set_node({x = pointed_thing.under.x - tonumber(fields_parameter["length"]) / 2, y = pointed_thing.under.y - tonumber(fields_parameter["height"]) / 2, z = pointed_thing.under.z}, {name = "air"})
pos.z = pos.z + 1
end
amount_of_rows = amount_of_rows + 1
if amount_of_rows > tonumber(fields_parameter["length"]) or amount_of_rows == tonumber(fields_parameter["length"]) then
amount_of_rows = 0
else
pos.x = pointed_thing.x - tonumber(fields_parameter["length"]) / 2
pos.y = pos.y + 1
end
end
end
end
--[[if row == 1 then
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 2 then
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y - 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y - 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y - 1, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 3 then
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y - 1, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 4 then
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y, z = pointed_thing.under.z- 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 5 then
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 6 then
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 7 then
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x - 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 8 then
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y + 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y + 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x, y = pointed_thing.under.y + 1, z = pointed_thing.under.z + 1}, {name = "air"})
elseif row == 9 then
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z - 1}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z}, {name = "air"})
minetest.set_node({x = pointed_thing.under.x + 1, y = pointed_thing.under.y + 1, z = pointed_thing.under.z + 1}, {name = "air"})
end
end
end
end]]
})