mirror of
https://github.com/minetest-mods/i3.git
synced 2024-12-27 03:10:39 +01:00
Add worldedit GUI support
This commit is contained in:
parent
694b9237e8
commit
328ad308f3
@ -10,6 +10,7 @@ read_globals = {
|
|||||||
"armor",
|
"armor",
|
||||||
"skins",
|
"skins",
|
||||||
"awards",
|
"awards",
|
||||||
|
"worldedit",
|
||||||
"vector",
|
"vector",
|
||||||
"string",
|
"string",
|
||||||
"table",
|
"table",
|
||||||
|
59
init.lua
59
init.lua
@ -36,6 +36,7 @@ local write_json = core.write_json
|
|||||||
|
|
||||||
local chat_send = core.chat_send_player
|
local chat_send = core.chat_send_player
|
||||||
local show_formspec = core.show_formspec
|
local show_formspec = core.show_formspec
|
||||||
|
local check_privs = core.check_player_privs
|
||||||
local globalstep = core.register_globalstep
|
local globalstep = core.register_globalstep
|
||||||
local on_shutdown = core.register_on_shutdown
|
local on_shutdown = core.register_on_shutdown
|
||||||
local get_players = core.get_connected_players
|
local get_players = core.get_connected_players
|
||||||
@ -200,7 +201,7 @@ end
|
|||||||
local old_is_creative_enabled = core.is_creative_enabled
|
local old_is_creative_enabled = core.is_creative_enabled
|
||||||
|
|
||||||
function core.is_creative_enabled(name)
|
function core.is_creative_enabled(name)
|
||||||
return core.check_player_privs(name, {creative = true}) or old_is_creative_enabled(name)
|
return check_privs(name, {creative = true}) or old_is_creative_enabled(name)
|
||||||
end
|
end
|
||||||
|
|
||||||
i3.group_stereotypes = {
|
i3.group_stereotypes = {
|
||||||
@ -2525,6 +2526,58 @@ if rawget(_G, "skins") then
|
|||||||
insert(META_SAVES, "skin_id")
|
insert(META_SAVES, "skin_id")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if rawget(_G, "worldedit") then
|
||||||
|
i3.new_tab {
|
||||||
|
name = "worldedit",
|
||||||
|
description = "WorldEdit",
|
||||||
|
|
||||||
|
access = function(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
return check_privs(name, {server = true})
|
||||||
|
end,
|
||||||
|
|
||||||
|
formspec = function(player, _, fs)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
local wfs = worldedit.pages.worldedit_gui.get_formspec(name)
|
||||||
|
wfs = split(wfs, "]")
|
||||||
|
|
||||||
|
for i, elem in ipairs(wfs) do
|
||||||
|
if sub(elem, 1, 4) == "size" or sub(elem, 1, 5) == "label" or
|
||||||
|
find(elem, "worldedit_gui_exit") then
|
||||||
|
remove(wfs, i)
|
||||||
|
end
|
||||||
|
|
||||||
|
wfs[i] = wfs[i] .. "]"
|
||||||
|
end
|
||||||
|
|
||||||
|
local new_fs = {}
|
||||||
|
|
||||||
|
for i = 1, #wfs do
|
||||||
|
local elem = wfs[i]
|
||||||
|
local elem_name, field, str = match(elem, "(.*)%[.*%d+;(.*);(.*)]")
|
||||||
|
|
||||||
|
local X = i % 3
|
||||||
|
X = X + (X * 2.42) + 0.2
|
||||||
|
|
||||||
|
local Y = floor((i % (#wfs - 1) - X) / 3 + 1) + 1.2
|
||||||
|
|
||||||
|
insert(new_fs, fmt("%s[%.1f,%.1f;3,0.8;%s;%s]",
|
||||||
|
elem_name, X, Y, field, str:gsub("/", " / ")))
|
||||||
|
end
|
||||||
|
|
||||||
|
fs(concat(new_fs))
|
||||||
|
end,
|
||||||
|
|
||||||
|
fields = function(player)
|
||||||
|
i3.set_fs(player)
|
||||||
|
end,
|
||||||
|
|
||||||
|
hide_panels = function()
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
if rawget(_G, "awards") then
|
if rawget(_G, "awards") then
|
||||||
__awards = true
|
__awards = true
|
||||||
|
|
||||||
@ -2853,7 +2906,9 @@ on_receive_fields(function(player, formname, fields)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return true, tabs[data.current_tab].fields(player, data, fields)
|
local tab = tabs[data.current_tab]
|
||||||
|
|
||||||
|
return true, tab and tab.fields and tab.fields(player, data, fields)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
core.register_on_player_hpchange(function(player, hpchange)
|
core.register_on_player_hpchange(function(player, hpchange)
|
||||||
|
Loading…
Reference in New Issue
Block a user