Drop support for WorldEdit eventually

This commit is contained in:
Jean-Patrick Guerrero 2021-01-30 23:21:20 +01:00
parent e2102f1069
commit 3dc8e038f3
6 changed files with 27 additions and 71 deletions

View File

@ -10,7 +10,6 @@ read_globals = {
"armor", "armor",
"skins", "skins",
"awards", "awards",
"worldedit",
"vector", "vector",
"string", "string",
"table", "table",

8
API.md
View File

@ -39,15 +39,19 @@ i3.new_tab {
- `player` is an `ObjectRef` to the user. - `player` is an `ObjectRef` to the user.
- `data` are the user data. - `data` are the user data.
- `fs` is the formspec table which is callable with a metamethod. Each call adds a new entry. - `fs` is the formspec table which is callable with a metamethod. Each call adds a new entry.
- `i3.set_fs(player)` must be called to update the formspec.
#### `i3.set_fs(player[, extra_formspec])`
Updates the current formspec. `extra_formspec` adds an additional formspec string.
#### `i3.delete_tab(tabname)` #### `i3.delete_tab(tabname)`
Deletes a tab by name. Deletes a tab by name.
#### `i3.set_tab(player, tabname)` #### `i3.set_tab(player[, tabname])`
Sets the current tab by name. `player` is an `ObjectRef` to the user. Sets the current tab by name. `player` is an `ObjectRef` to the user.
`tabname` can be omitted to get an empty tab.
#### `i3.override_tab(tabname, def)` #### `i3.override_tab(tabname, def)`

View File

@ -26,8 +26,6 @@ To enable it: `i3_progressive_mode = true` in `minetest.conf`.*
- [**`3d_armor`**](https://content.minetest.net/packages/stu/3d_armor/) - [**`3d_armor`**](https://content.minetest.net/packages/stu/3d_armor/)
- [**`skinsdb`**](https://content.minetest.net/packages/bell07/skinsdb/) - [**`skinsdb`**](https://content.minetest.net/packages/bell07/skinsdb/)
- [**`awards`**](https://content.minetest.net/packages/rubenwardy/awards/) - [**`awards`**](https://content.minetest.net/packages/rubenwardy/awards/)
- [**`worldedit`**](https://content.minetest.net/packages/sfan5/worldedit/)
#### Recommendations #### Recommendations

View File

@ -92,8 +92,8 @@ local META_SAVES = {"bag_size", "skin_id"}
local BAG_SIZES = { local BAG_SIZES = {
small = INV_SIZE + 3, small = INV_SIZE + 3,
medium = INV_SIZE + 9, medium = INV_SIZE + 6,
large = INV_SIZE + 21, large = INV_SIZE + 9,
} }
local PNG = { local PNG = {
@ -2022,7 +2022,7 @@ local function make_fs(player, data)
local full_height = LINES + 1.73 local full_height = LINES + 1.73
local tab = tabs[data.current_tab] local tab = tabs[data.current_tab]
local hide_panels = tab.hide_panels and tab.hide_panels(player, data) local hide_panels = tab and tab.hide_panels and tab.hide_panels(player, data)
local show_panels = data.query_item and not hide_panels local show_panels = data.query_item and not hide_panels
fs(fmt("formspec_version[%u]size[%f,%f]no_prepend[]bgcolor[#0000]", fs(fmt("formspec_version[%u]size[%f,%f]no_prepend[]bgcolor[#0000]",
@ -2046,12 +2046,12 @@ local function make_fs(player, data)
return concat(fs) return concat(fs)
end end
function i3.set_fs(player) function i3.set_fs(player, _fs)
local name = player:get_player_name() local name = player:get_player_name()
local data = pdata[name] local data = pdata[name]
if not data then return end if not data then return end
local fs = make_fs(player, data) local fs = fmt("%s%s", make_fs(player, data), _fs or "")
player:set_inventory_formspec(fs) player:set_inventory_formspec(fs)
end end
@ -2094,12 +2094,14 @@ function i3.delete_tab(tabname)
end end
function i3.set_tab(player, tabname) function i3.set_tab(player, tabname)
if not true_str(tabname) then
return err "i3.set_tab: tab name missing"
end
local name = player:get_player_name() local name = player:get_player_name()
local data = pdata[name] local data = pdata[name]
if not tabname or tabname == "" then
data.current_tab = 0
return
end
local found local found
for i, def in ipairs(tabs) do for i, def in ipairs(tabs) do
@ -2231,14 +2233,14 @@ local function panel_fields(player, data, fields)
end end
local function get_inv_slots(data, fs) local function get_inv_slots(data, fs)
local inv_x, inv_y = 0.234, 6.6 local inv_x, inv_y = 0.22, 6.6
local width, size, spacing, extra = HOTBAR_COUNT, 0.96, 0.15, 0 local width, size, spacing = HOTBAR_COUNT, 1, 0.1
local bag = data.bag_size local bag = data.bag_size
fs("style_type[box;colors=#77777710,#77777710,#777,#777]") fs("style_type[box;colors=#77777710,#77777710,#777,#777]")
for i = 0, HOTBAR_COUNT - 1 do for i = 0, HOTBAR_COUNT - 1 do
fs(fmt("box", i + inv_x + (i * 0.1), inv_y, size, size, "")) fs(fmt("box", i * size + inv_x + (i * spacing), inv_y, size, size, ""))
end end
fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing), fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing),
@ -2246,16 +2248,16 @@ local function get_inv_slots(data, fs)
if bag then if bag then
if bag == "small" then if bag == "small" then
width, size, spacing, extra = 10, 0.89, 0.1, 0.01 width, size = 10, 0.892
elseif bag == "medium" then elseif bag == "medium" then
width, size, spacing, extra = 12, 0.72, 0.1, 0.032 width, size = 11, 0.8
elseif bag == "large" then elseif bag == "large" then
width, size, spacing, extra = 12, 0.72, 0.1, 0.032 width, size = 12, 0.726
end end
end end
fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing), fs(fmt("style_type[list;size=%f;spacing=%f]", size, spacing),
fmt("list[current_player;main;%f,%f;%u,%u;%u]", inv_x + extra, inv_y + 1.15, fmt("list[current_player;main;%f,%f;%u,%u;%u]", inv_x, inv_y + 1.15,
width, (bag and BAG_SIZES[data.bag_size] or INV_SIZE) / width, HOTBAR_COUNT), width, (bag and BAG_SIZES[data.bag_size] or INV_SIZE) / width, HOTBAR_COUNT),
"style_type[list;size=1;spacing=0.15]") "style_type[list;size=1;spacing=0.15]")
end end
@ -2318,7 +2320,7 @@ local function get_inventory_fs(player, data, fs)
scrollbar[%f,0.2;0.2,%f;vertical;scrbar_inv;%u] scrollbar[%f,0.2;0.2,%f;vertical;scrbar_inv;%u]
scrollbaroptions[arrows=default;thumbsize=0;max=1000] scrollbaroptions[arrows=default;thumbsize=0;max=1000]
]], ]],
(max_val * 4) / 15, max_val, 9.79, ctn_hgt, data.scrbar_inv or 0)) (max_val * 4) / 15, max_val, 9.8, ctn_hgt, data.scrbar_inv or 0))
fs(fmt("scroll_container[3.9,0.2;%f,%f;scrbar_inv;vertical]", ctn_len, ctn_hgt)) fs(fmt("scroll_container[3.9,0.2;%f,%f;scrbar_inv;vertical]", ctn_len, ctn_hgt))
@ -2527,53 +2529,6 @@ 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 worldedit.pages and check_privs(name, {server = true})
end,
formspec = function(player, _, fs)
local name = player:get_player_name()
local wfs = split(worldedit.pages.worldedit_gui.get_formspec(name), "]")
local new_fs = {}
for i = 3, 1, -1 do
remove(wfs, i)
end
for i, elem in ipairs(wfs) do
local ename, field, str = match(elem, "(.*)%[.*%d+;(.*);(.*)$")
local X, Y = i % 3, 0
if X == 2 then
Y = 1
end
X = X + (X * 2.1) + 0.5
Y = floor((i % #wfs - X) / 3) + 3 + Y
insert(new_fs, fmt("%s[%f,%f;3,0.8;%s;%s]",
ename, 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

View File

@ -1,3 +1,3 @@
name = i3 name = i3
description = Tiling inventory for Minetest description = Tiling inventory for Minetest
optional_depends = 3d_armor, skinsdb, awards, worldedit optional_depends = 3d_armor, skinsdb, awards

View File

@ -42,7 +42,7 @@ i3.new_tab {
end, end,
fields = function(player, data, fields) fields = function(player, data, fields)
i3.set_fs(player) i3.set_fs(player, "label[3,2;Test extra_fs]")
end, end,
} }