formspeceditor/mods/formspec_edit/init.lua
2021-07-16 12:32:43 -04:00

119 lines
No EOL
2.9 KiB
Lua

---------------------------------
---------Formspec Editor---------
---------------------------------
-----------By ExeVirus-----------
--Fix builtin
minetest.register_alias("mapgen_stone", "air")
minetest.register_alias("mapgen_water_source", "air")
--Variables
local modpath = minetest.get_modpath("formspec_edit")
local insecure_env = minetest.request_insecure_environment()
local auto_update_time = 0.2 --seconds
local error_formspec = [[
formspec_version[4]
size[8,2]
position[0.5,0.5]
label[0.375,0.5;Error:formspec.spec is either ]
label[0.375,1;non-existent,or empty]
]]
--function declarations
local update_formspec = nil
local load_formspec = nil
local auto_update = nil
local turn_off_hud = nil
--Registrations
-----------------------------------
--on_joinplayer()
-----------------------------------
minetest.register_on_joinplayer(
function(player_ref,_)
auto_update(player_ref:get_player_name())
turn_off_hud(player_ref)
set_sky(player_ref)
end
)
-----------------------------------
--on_player_receive_fields()
-----------------------------------
minetest.register_on_player_receive_fields(
function(player_ref, _, fields)
if(fields.quit) then
minetest.request_shutdown()
end
update_formspec(player_ref:get_player_name())
end
)
--function definitions
-----------------------------------
--auto_update()
-----------------------------------
auto_update = function(player_name)
update_formspec(player_name)
minetest.after(auto_update_time,auto_update,player_name)
end
-----------------------------------
--update_formspec()
-----------------------------------
update_formspec = function(player_name)
minetest.after(0.1,
function(player_name)
minetest.show_formspec(player_name, "fs", load_formspec())
end,
player_name)
end
-----------------------------------
--load_formspec()
-----------------------------------
load_formspec = function()
local io = insecure_env.io
local file = io.open(modpath .. "/formspec.spec", "rb")
if file == nil then
return error_formspec
else
local content = file:read("*all")
file:close()
if content == nil then
return error_formspec
else
return content
end
end
end
-----------------------------------
--turn_off_hud()
-----------------------------------
turn_off_hud = function(player_ref)
local flags = {
hotbar = false,
healthbar = false,
crosshair = false,
wielditem = false,
breathbar = false,
minimap = false,
minimap_radar = false,
}
player_ref:hud_set_flags(flags)
end
-----------------------------------
--set_sky()
-----------------------------------
set_sky = function(player_ref)
local sky = {
base_color = "#AAF",
type = "plain",
clouds = false,
}
player_ref:set_sky(sky)
player_ref:override_day_night_ratio(0)
end