70 lines
1.7 KiB
Lua
70 lines
1.7 KiB
Lua
local print = minetest.debug
|
|
print("sparktech init")
|
|
|
|
local NAME = minetest.get_current_modname()
|
|
local PATH = minetest.get_modpath(NAME)
|
|
|
|
dofile(PATH .. "/cable.lua")
|
|
dofile(PATH .. "/capacitor.lua")
|
|
dofile(PATH .. "/solar.lua")
|
|
dofile(PATH .. "/energy.lua")
|
|
|
|
sparktech = {
|
|
print = function(string)
|
|
minetest.chat_send_player(sparktech["player"]:get_player_name(), string)
|
|
end,
|
|
last_command = ""
|
|
}
|
|
|
|
minetest.register_node("sparktech:d_block", {
|
|
description = "Debug Block",
|
|
tiles = {"debug.png"},
|
|
groups = {oddly_breakable_by_hand = 1}
|
|
})
|
|
|
|
minetest.register_craftitem("sparktech:tablet", {
|
|
description = "Tablet",
|
|
inventory_image = "tablet.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
minetest.show_formspec(user:get_player_name(), "sparktech:f_laptop",
|
|
"size[10,10]" ..
|
|
"label[0,0;Execute]" ..
|
|
"field[1,5;8,1;code;Code;]" ..
|
|
"button_exit[4,8;2,1;exit;Send]" ..
|
|
"button_exit[4,6;2,1;last;Last]")
|
|
end
|
|
})
|
|
|
|
-- Register callback
|
|
minetest.register_on_player_receive_fields(function(player, form, fields)
|
|
if form ~= "sparktech:f_laptop" then
|
|
return false
|
|
end
|
|
|
|
if fields.last then
|
|
fields.code = sparktech["last_command"]
|
|
end
|
|
sparktech["player"] = player
|
|
sparktech["last_command"] = fields.code
|
|
|
|
--[[local func = loadstring(fields.code)()
|
|
local val = func.init()
|
|
local ret = "No return value"
|
|
if not (val == nil) then
|
|
ret = val
|
|
end]]--
|
|
|
|
local suc, val = pcall(loadstring, fields.code)
|
|
local ret = "E"
|
|
if suc then
|
|
_, ret = pcall(val, sparktech)
|
|
else
|
|
ret = val
|
|
end
|
|
if ret == nil then
|
|
ret = "[did not return]"
|
|
end
|
|
minetest.chat_send_player(player:get_player_name(), ret)
|
|
return true
|
|
end)
|